کار با 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 | ماتریس جابجایی Bind-pose برای این استخوان |
new MorphTargetDeformer() | یک دیفورمر هدف morph ایجاد کنید |
morph.Channels | IList<MorphTargetChannel> از کانالهای ترکیب |
new MorphTargetChannel(name) | ایجاد یک کانال مورف نامدار |
channel.ChannelWeight | وزن ترکیب: 0.0 = پایه، 1.0 = هدف |
channel.SetWeight(target, weight) | وزن ترکیب را برای یک شکل هدف تنظیم میکند (target: Shape, weight: double) |
mesh.Deformers | مجموعهای از دِفرمرها روی مش |
همچنین ببینید:
- Aspose.3D for .NET — Enterprise Documentation
- کار با موجودیتهای صحنه — دِفرمرها را به گرههای صحنه متصل کنید