mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-15 02:37:49 -06:00
Update BuildVolume and ConvexHullNode to use new API
This commit is contained in:
parent
090f912a55
commit
7395f37efe
3 changed files with 56 additions and 20 deletions
|
@ -12,6 +12,9 @@ from UM.Math.Color import Color
|
||||||
from UM.Math.AxisAlignedBox import AxisAlignedBox
|
from UM.Math.AxisAlignedBox import AxisAlignedBox
|
||||||
from UM.Math.Polygon import Polygon
|
from UM.Math.Polygon import Polygon
|
||||||
|
|
||||||
|
from UM.View.RenderBatch import RenderBatch
|
||||||
|
from UM.View.GL.OpenGL import OpenGL
|
||||||
|
|
||||||
import numpy
|
import numpy
|
||||||
|
|
||||||
class BuildVolume(SceneNode):
|
class BuildVolume(SceneNode):
|
||||||
|
@ -24,10 +27,10 @@ class BuildVolume(SceneNode):
|
||||||
self._height = 0
|
self._height = 0
|
||||||
self._depth = 0
|
self._depth = 0
|
||||||
|
|
||||||
self._material = None
|
self._shader = None
|
||||||
|
|
||||||
self._grid_mesh = None
|
self._grid_mesh = None
|
||||||
self._grid_material = None
|
self._grid_shader = None
|
||||||
|
|
||||||
self._disallowed_areas = []
|
self._disallowed_areas = []
|
||||||
self._disallowed_area_mesh = None
|
self._disallowed_area_mesh = None
|
||||||
|
@ -61,22 +64,14 @@ class BuildVolume(SceneNode):
|
||||||
if not self.getMeshData():
|
if not self.getMeshData():
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if not self._material:
|
if not self._shader:
|
||||||
self._material = renderer.createMaterial(
|
self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader"))
|
||||||
Resources.getPath(Resources.Shaders, "basic.vert"),
|
self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader"))
|
||||||
Resources.getPath(Resources.Shaders, "vertexcolor.frag")
|
|
||||||
)
|
|
||||||
self._grid_material = renderer.createMaterial(
|
|
||||||
Resources.getPath(Resources.Shaders, "basic.vert"),
|
|
||||||
Resources.getPath(Resources.Shaders, "grid.frag")
|
|
||||||
)
|
|
||||||
self._grid_material.setUniformValue("u_gridColor0", Color(245, 245, 245, 255))
|
|
||||||
self._grid_material.setUniformValue("u_gridColor1", Color(205, 202, 201, 255))
|
|
||||||
|
|
||||||
renderer.queueNode(self, material = self._material, mode = Renderer.RenderLines)
|
renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines)
|
||||||
renderer.queueNode(self, mesh = self._grid_mesh, material = self._grid_material, force_single_sided = True)
|
renderer.queueNode(self, mesh = self._grid_mesh, shader = self._grid_shader)
|
||||||
if self._disallowed_area_mesh:
|
if self._disallowed_area_mesh:
|
||||||
renderer.queueNode(self, mesh = self._disallowed_area_mesh, material = self._material, transparent = True)
|
renderer.queueNode(self, mesh = self._disallowed_area_mesh, shader = self._shader, transparent = True)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def rebuild(self):
|
def rebuild(self):
|
||||||
|
|
|
@ -7,6 +7,8 @@ from UM.Math.Color import Color
|
||||||
from UM.Math.Vector import Vector
|
from UM.Math.Vector import Vector
|
||||||
from UM.Mesh.MeshData import MeshData
|
from UM.Mesh.MeshData import MeshData
|
||||||
|
|
||||||
|
from UM.View.GL.OpenGL import OpenGL
|
||||||
|
|
||||||
import numpy
|
import numpy
|
||||||
|
|
||||||
class ConvexHullNode(SceneNode):
|
class ConvexHullNode(SceneNode):
|
||||||
|
@ -62,14 +64,14 @@ class ConvexHullNode(SceneNode):
|
||||||
return self._node
|
return self._node
|
||||||
|
|
||||||
def render(self, renderer):
|
def render(self, renderer):
|
||||||
if not self._material:
|
if not self._shader:
|
||||||
self._material = renderer.createMaterial(Resources.getPath(Resources.Shaders, "basic.vert"), Resources.getPath(Resources.Shaders, "color.frag"))
|
self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader"))
|
||||||
|
|
||||||
if self.getParent():
|
if self.getParent():
|
||||||
self._material.setUniformValue("u_color", self._color)
|
self._material.setUniformValue("u_color", self._color)
|
||||||
renderer.queueNode(self, material = self._material, transparent = True)
|
renderer.queueNode(self, transparent = True, shader = self._shader)
|
||||||
if self._convex_hull_head_mesh:
|
if self._convex_hull_head_mesh:
|
||||||
renderer.queueNode(self, material = self._material,transparent = True, mesh = self._convex_hull_head_mesh)
|
renderer.queueNode(self, shader = self._shader, transparent = True, mesh = self._convex_hull_head_mesh)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
39
resources/shaders/grid.shader
Normal file
39
resources/shaders/grid.shader
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
[shaders]
|
||||||
|
vertex =
|
||||||
|
uniform highp mat4 u_modelViewProjectionMatrix;
|
||||||
|
|
||||||
|
attribute highp vec4 a_vertex;
|
||||||
|
attribute lowp vec2 a_uvs;
|
||||||
|
|
||||||
|
varying lowp vec2 v_uvs;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
gl_Position = u_modelViewProjectionMatrix * a_vertex;
|
||||||
|
v_uvs = a_uvs;
|
||||||
|
}
|
||||||
|
|
||||||
|
fragment =
|
||||||
|
uniform lowp vec4 u_gridColor0;
|
||||||
|
uniform lowp vec4 u_gridColor1;
|
||||||
|
|
||||||
|
varying lowp vec2 v_uvs;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
if (mod(floor(v_uvs.x / 10.0) - floor(v_uvs.y / 10.0), 2.0) < 1.0)
|
||||||
|
gl_FragColor = u_gridColor0;
|
||||||
|
else
|
||||||
|
gl_FragColor = u_gridColor1;
|
||||||
|
}
|
||||||
|
|
||||||
|
[defaults]
|
||||||
|
u_gridColor0 = [0.96, 0.96, 0.96, 1.0]
|
||||||
|
u_gridColor1 = [0.8, 0.8, 0.8, 1.0]
|
||||||
|
|
||||||
|
[bindings]
|
||||||
|
u_modelViewProjectionMatrix = model_view_projection_matrix
|
||||||
|
|
||||||
|
[attributes]
|
||||||
|
a_vertex = vertex
|
||||||
|
a_uvs = uv0
|
Loading…
Add table
Add a link
Reference in a new issue