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