WedgeGeometry function
A Wedge is the lower part of a cube that was cut in half through the plane: (-x, y, -z) (-x, y, z), (x, -y, -z), (x, -y, z)
Implementation
GeometryBuilder WedgeGeometry(
{double x = 1.0,
double y = 1.0,
double z = 1.0,
double uMin = 0.0,
double uMax = 1.0,
double vMin = 0.0,
double vMax = 1.0,
bool computeNormals = true}) {
List<VM.Vector3> vertices3 = [
// Front face3
VM.Vector3(-x, -y, z),
VM.Vector3(x, -y, z),
VM.Vector3(-x, y, z),
// Back face3
VM.Vector3(-x, -y, -z),
VM.Vector3(-x, y, -z),
VM.Vector3(x, -y, -z),
];
List<VM.Vector3> vertices4 = [
// Front face4
// Top/Right diagonal face
VM.Vector3(-x, y, -z),
VM.Vector3(-x, y, z),
VM.Vector3(x, -y, z),
VM.Vector3(x, -y, -z),
// Bottom face
VM.Vector3(x, -y, z),
VM.Vector3(-x, -y, z),
VM.Vector3(-x, -y, -z),
VM.Vector3(x, -y, -z),
// Left face
VM.Vector3(-x, -y, -z),
VM.Vector3(-x, -y, z),
VM.Vector3(-x, y, z),
VM.Vector3(-x, y, -z)
];
List<VM.Vector2> uvs3 = [
// Front face
VM.Vector2(uMin, vMin),
VM.Vector2(uMax, vMin),
VM.Vector2(uMax, vMax),
// Back face
VM.Vector2(uMax, vMin),
VM.Vector2(uMax, vMax),
VM.Vector2(uMin, vMax),
];
List<VM.Vector2> uvs4 = [
// Top/Right diagonal face
VM.Vector2(uMin, vMax),
VM.Vector2(uMin, vMin),
VM.Vector2(uMax, vMin),
VM.Vector2(uMax, vMax),
// Bottom face
VM.Vector2(uMax, vMax),
VM.Vector2(uMin, vMax),
VM.Vector2(uMin, vMin),
VM.Vector2(uMax, vMin),
// Left face
VM.Vector2(uMin, vMin),
VM.Vector2(uMax, vMin),
VM.Vector2(uMax, vMax),
VM.Vector2(uMin, vMax)
];
GeometryBuilder gb = GeometryBuilder();
gb.EnableAttribute(aTexUV);
gb.EnableAttribute(aNormal);
gb.AddFaces3(2);
gb.AddVertices(vertices3);
gb.AddAttributesVector2(aTexUV, uvs3);
gb.AddFaces4(3);
gb.AddVertices(vertices4);
gb.AddAttributesVector2(aTexUV, uvs4);
if (computeNormals) gb.GenerateNormalsAssumingTriangleMode();
return gb;
}