العمل مع 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 عبر جميع العظام التي تؤثر على الرأس.
تشوه الهدف التشكيلي
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.Channels | IList<MorphTargetChannel> من قنوات المزج |
new MorphTargetChannel(name) | إنشاء قناة morph مسماة |
channel.ChannelWeight | وزن المزج: 0.0 = الأساس، 1.0 = الهدف |
channel.SetWeight(target, weight) | يضبط وزن المزج لشكل الهدف (target: Shape, weight: double) |
mesh.Deformers | مجموعة من المشوهات على شبكة |
انظر أيضاً
- Aspose.3D for .NET — Enterprise Documentation
- العمل مع كيانات المشهد — إرفاق المشوهات بعقد المشهد