Improve rendering of build platform and build volume

This commit is contained in:
Arjen Hiemstra 2015-03-13 12:15:21 +01:00
parent 80ca571cea
commit 5dcd5c2258

View file

@ -2,6 +2,9 @@ from UM.Scene.SceneNode import SceneNode
from UM.Application import Application
from UM.Resources import Resources
from UM.Mesh.MeshData import MeshData
from UM.Mesh.MeshBuilder import MeshBuilder
from UM.Math.Vector import Vector
from UM.Math.Color import Color
class BuildVolume(SceneNode):
def __init__(self, parent = None):
@ -29,9 +32,8 @@ class BuildVolume(SceneNode):
if not self._material:
self._material = renderer.createMaterial(
Resources.getPath(Resources.ShadersLocation, 'basic.vert'),
Resources.getPath(Resources.ShadersLocation, 'color.frag')
Resources.getPath(Resources.ShadersLocation, 'vertexcolor.frag')
)
self._material.setUniformValue('u_color', [0.0, 0.0, 0.5, 0.1])
renderer.queueNode(self, material = self._material, transparent = True)
return True
@ -40,7 +42,7 @@ class BuildVolume(SceneNode):
if self._width == 0 or self._height == 0 or self._depth == 0:
return
mesh = MeshData()
mb = MeshBuilder()
minW = -self._width / 2
maxW = self._width / 2
@ -49,52 +51,49 @@ class BuildVolume(SceneNode):
minD = -self._depth / 2
maxD = self._depth / 2
#Front
mesh.addVertexWithNormal(maxW, maxH, maxD, 0, 0, -1)
mesh.addVertexWithNormal(minW, minH, maxD, 0, 0, -1)
mesh.addVertexWithNormal(minW, maxH, maxD, 0, 0, -1)
mesh.addVertexWithNormal(maxW, maxH, maxD, 0, 0, -1)
mesh.addVertexWithNormal(maxW, minH, maxD, 0, 0, -1)
mesh.addVertexWithNormal(minW, minH, maxD, 0, 0, -1)
mb.addQuad(
Vector(minW, minH, maxD),
Vector(maxW, minH, maxD),
Vector(maxW, maxH, maxD),
Vector(minW, maxH, maxD),
color = Color(0.2, 0.67, 0.9, 0.25),
normal = Vector(0, 0, -1)
)
#Back
mesh.addVertexWithNormal(maxW, maxH, minD, 0, 0, 1)
mesh.addVertexWithNormal(minW, maxH, minD, 0, 0, 1)
mesh.addVertexWithNormal(minW, minH, minD, 0, 0, 1)
mesh.addVertexWithNormal(maxW, maxH, minD, 0, 0, 1)
mesh.addVertexWithNormal(minW, minH, minD, 0, 0, 1)
mesh.addVertexWithNormal(maxW, minH, minD, 0, 0, 1)
mb.addQuad(
Vector(maxW, minH, maxD),
Vector(maxW, minH, minD),
Vector(maxW, maxH, minD),
Vector(maxW, maxH, maxD),
color = Color(0.2, 0.67, 0.9, 0.38),
normal = Vector(1, 0, 0)
)
#Left
mesh.addVertexWithNormal(minW, maxH, maxD, -1, 0, 0)
mesh.addVertexWithNormal(minW, minH, minD, -1, 0, 0)
mesh.addVertexWithNormal(minW, maxH, minD, -1, 0, 0)
mesh.addVertexWithNormal(minW, maxH, maxD, -1, 0, 0)
mesh.addVertexWithNormal(minW, minH, maxD, -1, 0, 0)
mesh.addVertexWithNormal(minW, minH, minD, -1, 0, 0)
mb.addQuad(
Vector(minW, minH, minD),
Vector(minW, maxH, minD),
Vector(maxW, maxH, minD),
Vector(maxW, minH, minD),
color = Color(0.2, 0.67, 0.9, 0.25),
normal = Vector(0, 0, 1)
)
#Right
mesh.addVertexWithNormal(maxW, maxH, maxD, 1, 0, 0)
mesh.addVertexWithNormal(maxW, minH, minD, 1, 0, 0)
mesh.addVertexWithNormal(maxW, minH, maxD, 1, 0, 0)
mesh.addVertexWithNormal(maxW, maxH, maxD, 1, 0, 0)
mesh.addVertexWithNormal(maxW, maxH, minD, 1, 0, 0)
mesh.addVertexWithNormal(maxW, minH, minD, 1, 0, 0)
mb.addQuad(
Vector(minW, minH, maxD),
Vector(minW, maxH, maxD),
Vector(minW, maxH, minD),
Vector(minW, minH, minD),
color = Color(0.2, 0.67, 0.9, 0.38),
normal = Vector(-1, 0, 0)
)
#Top
mesh.addVertexWithNormal(maxW, maxH, maxD, 0, -1, 0)
mesh.addVertexWithNormal(minW, maxH, maxD, 0, -1, 0)
mesh.addVertexWithNormal(minW, maxH, minD, 0, -1, 0)
mesh.addVertexWithNormal(maxW, maxH, maxD, 0, -1, 0)
mesh.addVertexWithNormal(minW, maxH, minD, 0, -1, 0)
mesh.addVertexWithNormal(maxW, maxH, minD, 0, -1, 0)
mb.addQuad(
Vector(minW, maxH, maxD),
Vector(maxW, maxH, maxD),
Vector(maxW, maxH, minD),
Vector(minW, maxH, minD),
color = Color(0.2, 0.67, 0.9, 0.5),
normal = Vector(0, -1, 0)
)
#Bottom
mesh.addVertexWithNormal(maxW, minH, maxD, 0, 1, 0)
mesh.addVertexWithNormal(minW, minH, minD, 0, 1, 0)
mesh.addVertexWithNormal(minW, minH, maxD, 0, 1, 0)
mesh.addVertexWithNormal(maxW, minH, maxD, 0, 1, 0)
mesh.addVertexWithNormal(maxW, minH, minD, 0, 1, 0)
mesh.addVertexWithNormal(minW, minH, minD, 0, 1, 0)
self.setMeshData(mesh)
self.setMeshData(mb.getData())