العمل مع 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.BonesIList<Bone> من العظام في هذا المشكل
new Bone(name)إنشاء عظم مسمى
bone.SetWeight(vertexIndex, weight)تعيين وزن دمج إلى رأس
bone.BoneTransformمصفوفة إزاحة وضعية الربط لهذا العظم
new MorphTargetDeformer()إنشاء مُحوّل هدف التحوّل
morph.ChannelsIList<MorphTargetChannel> من قنوات المزج
new MorphTargetChannel(name)إنشاء قناة morph مسماة
channel.ChannelWeightوزن المزج: 0.0 = الأساس، 1.0 = الهدف
channel.SetWeight(target, weight)يضبط وزن المزج لشكل الهدف (target: Shape, weight: double)
mesh.Deformersمجموعة من المشوهات على شبكة

انظر أيضاً

 العربية