Transform — Aspose.3D FOSS for Java
Example: com.aspose.threed (aspose-3d-foss)
Transform موقعیت، جهتگیری و مقیاس یک را کنترل میکند Node در صحنهٔ سهبعدی. هر گره دقیقاً یک Transform, که از طریق node.getTransform().
public class Transform extends A3DObjectدسترسی به Transform گره
import com.aspose.threed.Scene;
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("box");
Transform t = node.getTransform();Example
| Example | Example | Example | Example | Example |
|---|---|---|---|---|
translation | Vector3 | getTranslation() | setTranslation(Vector3) | جابهجایی موقعیت نسبت به مبدأ گرهٔ والد. پیشفرض Vector3(0, 0, 0). |
scaling | Vector3 | getScaling() | setScaling(Vector3) | ضریب مقیاس غیر یکنواخت برای هر محور. پیشفرض Vector3(1, 1, 1). |
rotation | Quaternion | getRotation() | setRotation(Quaternion) | چرخش به صورت یک کواترنیون واحد. تنظیم این مقدار همچنین زاویههای اویلر را بهروز میکند. |
eulerAngles | Vector3 | getEulerAngles() | setEulerAngles(Vector3) | چرخش به درجه به صورت زاویههای اویلر (X, Y, Z). تنظیم این مقدار همچنین چرخش کواترنیونی را بهروز میکند. |
preRotation | Vector3 | getPreRotation() | setPreRotation(Vector3) | زاویههای اویلر که قبل از چرخش اصلی اعمال میشوند (در rigهای FBX استفاده میشود). |
postRotation | Vector3 | getPostRotation() | setPostRotation(Vector3) | زاویههای اویلر که پس از چرخش اصلی اعمال میشوند. |
geometricTranslation | Vector3 | getGeometricTranslation() | setGeometricTranslation(Vector3) | ترجمهٔ محلیتنها: بر هندسه تأثیر میگذارد اما بر گرههای فرزند تأثیری ندارد. |
geometricScaling | Vector3 | getGeometricScaling() | setGeometricScaling(Vector3) | مقیاسمحلیتنها: بر هندسه تأثیر میگذارد اما بر گرههای فرزند تأثیری ندارد. |
geometricRotation | Vector3 | getGeometricRotation() | setGeometricRotation(Vector3) | چرخشمحلیتنها: بر هندسه تأثیر میگذارد اما بر گرههای فرزند تأثیری ندارد. |
transformMatrix | Matrix4 | getTransformMatrix() | setTransformMatrix(Matrix4) | ماتریس تبدیل ترکیبی کامل ۴×۴. کش شده؛ هنگام تغییر هر مؤلفه دوباره محاسبه میشود. تنظیم آن بهصورت خودکار به ترجمه/مقیاس/چرخش تجزیه میشود. |
متدهای تنظیمکنندهٔ Fluent
تمام متدهای تنظیمکننده مقدار باز میگردانند this,، که امکان زنجیرهسازی را میدهد:
| Example | Example | Example |
|---|---|---|
setTranslation(double tx, double ty, double tz) | double, double, double | تنظیم موقعیت. |
setScale(double sx, double sy, double sz) | double, double, double | تنظیم مقیاس. |
setEulerAngles(double rx, double ry, double rz) | double, double, double | تنظیم چرخش بر حسب درجه. |
setRotation(double rx, double ry, double rz, double rw) | double, double, double, double | تنظیم چرخش بهصورت یک کواترنیون (x, y, z, w). |
setPreRotation(double rx, double ry, double rz) | double, double, double | چرخش پیشین را بر حسب درجه تنظیم کنید. |
setPostRotation(double rx, double ry, double rz) | double, double, double | چرخش پسین را بر حسب درجه تنظیم کنید. |
setGeometricTranslation(double x, double y, double z) | double, double, double | انتقال هندسی را تنظیم کنید. |
setGeometricScaling(double sx, double sy, double sz) | double, double, double | مقیاس هندسی را تنظیم کنید. |
setGeometricRotation(double rx, double ry, double rz) | double, double, double | چرخش هندسی را بر حسب درجه تنظیم کنید. |
مثالهای استفاده
موقعیتدهی به یک گره
import com.aspose.threed.Scene;
import com.aspose.threed.*;
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("box");
// Using fluent setters
node.getTransform().setTranslation(5.0, 0.0, -3.0);
// Or via property setter
node.getTransform().setTranslation(new Vector3(5.0, 0.0, -3.0));چرخش با زاویههای اویلر
import com.aspose.threed.Scene;
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("rotated");
// Rotate 45 degrees around Y axis
node.getTransform().setEulerAngles(0.0, 45.0, 0.0);
// Chain multiple operations
node.getTransform()
.setTranslation(2.0, 0.0, 0.0)
.setScale(2.0, 2.0, 2.0);چرخش با یک کواترنیون
import com.aspose.threed.Scene;
import com.aspose.threed.*;
import com.aspose.threed.*;
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("q-rotated");
// 90 degrees rotation around the Y axis
double halfAngle = Math.toRadians(45); // half the total rotation
Quaternion q = new Quaternion(Math.cos(halfAngle), 0.0, Math.sin(halfAngle), 0.0);
node.getTransform().setRotation(q);
System.out.println("Euler: " + node.getTransform().getEulerAngles()); // synced automaticallyمقیاس و موقعیت بهصورت همزمان
import com.aspose.threed.Scene;
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("big-offset");
node.getTransform()
.setTranslation(10.0, 0.0, 0.0)
.setScale(3.0, 3.0, 3.0)
.setEulerAngles(0.0, 90.0, 0.0);جابهجایی هندسی (Pivot Offset)
تبدیلهای هندسی، هندسه را نسبت به نقطهٔ محوری گره جابهجا میکنند بدون اینکه بر گرههای فرزند تأثیر بگذارند؛ برای مرکز کردن یک مش درون گرهٔ خود مفید است:
import com.aspose.threed.Scene;
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("centered-mesh");
// Shift the mesh half a unit down so its base sits at y=0
node.getTransform().setGeometricTranslation(0.0, -0.5, 0.0);خواندن ماتریس ترکیبی Transform
import com.aspose.threed.Scene;
import com.aspose.threed.*;
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("m");
node.getTransform().setTranslation(1.0, 2.0, 3.0);
node.getTransform().setEulerAngles(0.0, 45.0, 0.0);
Matrix4 m = node.getTransform().getTransformMatrix();
System.out.println(m.getClass().getName()); // com.aspose.threed.Matrix4