void project_to_target() { PolyCurveSO sourceSO = targets[0]; DCurve3 curve = sourceSO.Curve; int N = curve.VertexCount; for (int i = 0; i < N; ++i) { Vector3f v = (Vector3f)curve[i]; Vector3f vW = SceneTransforms.TransformTo(v, sourceSO, CoordSpace.ObjectCoords, CoordSpace.WorldCoords); vW = (Vector3f)ProjectionTarget.Project(vW); curve[i] = SceneTransforms.TransformTo(vW, sourceSO, CoordSpace.WorldCoords, CoordSpace.ObjectCoords); } }
/// <summary> /// This computes projected position w/ proper constraints/etc. /// Does not modify mesh. /// </summary> protected virtual Vector3d ComputeProjectedVertexPos(int vID, out bool bModified) { bModified = false; if (vertex_is_constrained(vID)) { return(Mesh.GetVertex(vID)); } if (VertexControlF != null && (VertexControlF(vID) & VertexControl.NoProject) != 0) { return(Mesh.GetVertex(vID)); } Vector3d curpos = mesh.GetVertex(vID); Vector3d projected = ProjectionTarget.Project(curpos, vID); bModified = true; return(projected); }