ทำงานกับ Deformers
การทำงานกับ Deformers
Aspose.3D สำหรับ .NET รองรับสองระบบการบิดเบือน: การบิดรูปร่างแบบโครงกระดูก via SkinDeformer and Bone, ซึ่งผูกโครงกระดูกกับเมชเพื่อการเคลื่อนไหวของตัวละคร, และ การบิดรูปร่างแบบ morph target via MorphTargetDeformer, ซึ่งผสมผสานระหว่างรูปทรงเมชหลายรูปแบบ.
Skeletal Deformation กับ SkinDeformer
SkinDeformer เชื่อมต่อชุดของวัตถุ Bone เข้ากับ mesh. แต่ละโครงกระดูกกำหนดน้ำหนักสำหรับแต่ละเวอร์เท็กซ์ที่มันมีอิทธิพล. mesh จะบิดรูปเมื่อการแปลงของโครงกระดูกเปลี่ยนแปลง.
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ต้องเป็นดัชนีที่ถูกต้องในอาร์เรย์ control-points ของเมช น้ำหนักโดยทั่วไปจะถูกทำให้เป็นค่าปกติเพื่อให้ผลรวมเป็น 1.0 สำหรับกระดูกทั้งหมดที่มีอิทธิพลต่อเวอร์เทกซ์หนึ่ง.
การบิดรูปทรงแบบ Morph Target
MorphTargetDeformer ผสม mesh พื้นฐานไปยังรูปทรงเป้าหมายหนึ่งหรือหลายรูป. แต่ละเป้าหมายเป็น mesh แยกที่มี topology เดียวกันแต่ตำแหน่งเวอร์เท็กซ์ต่างกัน.
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() | Create a skeletal deformer to attach to a mesh |
skin.Bones | IList<Bone> ของกระดูกใน deformer นี้ |
new Bone(name) | สร้างกระดูกที่ตั้งชื่อ |
bone.SetWeight(vertexIndex, weight) | กำหนด blend weight ให้กับ vertex |
bone.BoneTransform | เมทริกซ์ออฟเซ็ต Bind-pose สำหรับกระดูกนี้ |
new MorphTargetDeformer() | สร้าง morph target deformer |
morph.Channels | IList<MorphTargetChannel> ของ blend channels |
new MorphTargetChannel(name) | สร้าง morph channel ที่มีชื่อ |
channel.ChannelWeight | น้ำหนักการผสม: 0.0 = พื้นฐาน, 1.0 = เป้าหมาย |
channel.SetWeight(target, weight) | กำหนดน้ำหนักการผสมสำหรับรูปร่างเป้าหมาย (target: Shape, weight: double) |
mesh.Deformers | คอลเลกชันของดีฟอร์เมอร์บนเมช |
ดูเพิ่มเติม
- Aspose.3D for .NET — Enterprise Documentation
- การทำงานกับเอนทิตีของฉาก — แนบดีฟอร์เมอร์ไปยังโหนดของฉาก