private static Vector3[] RefineVertexPositions(Geometry geometry, RefinementResult refinementResult) { var stencils = refinementResult.Mesh.Stencils.Map(stencil => new WeightedIndex(stencil.Index, stencil.Weight)); Vector3[] refinedVertexPositions = new Subdivider(stencils).Refine(geometry.VertexPositions, new Vector3Operators()); return(refinedVertexPositions); }
public static RefinementResult Combine(RefinementResult resultA, RefinementResult resultB) { SubdivisionMesh combinedMesh = SubdivisionMesh.Combine( resultA.Mesh, resultB.Mesh); int[] combinedControlFaceMap = Enumerable.Concat( resultA.ControlFaceMap, resultB.ControlFaceMap).ToArray(); return(new RefinementResult(combinedMesh, combinedControlFaceMap)); }
public RefinementResult Refine(int refinementLevel) { int actualRefinmentLevel; bool derivativesOnly; if (Type == GeometryType.SubdivisionSurface) { actualRefinmentLevel = refinementLevel; derivativesOnly = false; } else { actualRefinmentLevel = 0; derivativesOnly = true; } RefinementResult refinementResult = RefinementResult.Make( new QuadTopology(VertexCount, Faces), SurfaceMap, actualRefinmentLevel, derivativesOnly); return(refinementResult); }