Пример #1
0
        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);
            }
        }
Пример #2
0
        /// <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);
        }