کار با 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ماتریس جابجایی Bind-pose برای این استخوان
new MorphTargetDeformer()یک دیفورمر هدف morph ایجاد کنید
morph.ChannelsIList<MorphTargetChannel> از کانال‌های ترکیب
new MorphTargetChannel(name)ایجاد یک کانال مورف نام‌دار
channel.ChannelWeightوزن ترکیب: 0.0 = پایه، 1.0 = هدف
channel.SetWeight(target, weight)وزن ترکیب را برای یک شکل هدف تنظیم می‌کند (target: Shape, weight: double)
mesh.Deformersمجموعه‌ای از دِفرمرها روی مش

همچنین ببینید:

 فارسی