עבודה עם Deformers
עבודה עם Deformers
Aspose.3D עבור .NET תומך בשתי מערכות עיוות: עיוות שלד via SkinDeformer and Bone, שמקשר שלד לרשת לצורך הנפשת דמויות, ו עיוות של מטרה מורפית via MorphTargetDeformer, שממזג בין צורות רשת מרובות.
שינוי שלד עם SkinDeformer
SkinDeformer מצרף קבוצה של עצמים Bone למשטח. כל עצם שלד מגדיר משקל לכל קודקוד שהוא משפיע עליו. המשטח מתעוות כאשר שינויי הטרנספורמציות של העצם מתרחשים.
using Aspose.ThreeD;
using Aspose.ThreeD.Deformers;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var mesh = new Mesh("body");
Node meshNode = scene.RootNode.CreateChildNode("body", mesh);
// Create a SkinDeformer and attach it to the mesh
var skin = new SkinDeformer();
mesh.Deformers.Add(skin);
// Define a bone and assign per-vertex weights
var bone = new Bone("spine");
bone.BoneTransform = Matrix4.Identity;
bone.SetWeight(0, 1.0);
bone.SetWeight(1, 0.8);
skin.Bones.Add(bone);אינדקסי הקודקודים שמועברים ל-
SetWeightחייבים להיות אינדקסים תקינים במערך נקודות הבקרה של הרשת. המשקלים בדרך כלל מנורמלים כך שסכומם שווה ל-1.0 בכל העצמות המשפיעות על קודקוד.
דפורמציית Morph Target
MorphTargetDeformer ממזג את המשטח הבסיסי לעבר צורה אחת או יותר של מטרה. כל מטרה היא משטח נפרד עם אותה טופולוגיה אך עם מיקומי קודקודים שונים.
using Aspose.ThreeD;
using Aspose.ThreeD.Deformers;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var baseMesh = new Mesh("face_neutral");
scene.RootNode.CreateChildNode("face", baseMesh);
// Target shape
var smileMesh = new Shape("face_smile");
// Attach a MorphTargetDeformer
var morph = new MorphTargetDeformer();
baseMesh.Deformers.Add(morph);
// Add a morph channel targeting the smile mesh
var smileChannel = new MorphTargetChannel("smile");
smileChannel.Targets.Add(smileMesh);
morph.Channels.Add(smileChannel);
// At runtime, set the blend weight (0.0 = base, 1.0 = full target)
smileChannel.SetWeight(smileMesh, 0.75);API Quick Reference
| Member | תיאור |
|---|---|
new SkinDeformer() | צור משנה שלד כדי לצרף לרשת |
skin.Bones | IList<Bone> של עצמות במשנה זה |
new Bone(name) | צור עצם בשם |
bone.SetWeight(vertexIndex, weight) | הקצה משקל בלנד לקודקוד |
bone.BoneTransform | מטריצת הסטת תנוחת קשירה לעצם זה |
new MorphTargetDeformer() | צור morph target deformer |
morph.Channels | IList<MorphTargetChannel> של ערוצי ערבוב |
new MorphTargetChannel(name) | צור named morph channel |
channel.ChannelWeight | משקל תערובת: 0.0 = בסיס, 1.0 = יעד |
channel.SetWeight(target, weight) | מגדיר את משקל התערובת עבור צורת יעד (target: Shape, weight: double) |
mesh.Deformers | אוסף של מעוותים על רשת |
ראה גם
- Aspose.3D for .NET — Enterprise Documentation
- עבודה עם ישויות סצנה — לחבר מעוותים לצמתים בסצנה