Transform — Aspose.3D FOSS for Java

Example: com.aspose.threed (aspose-3d-foss)

Transform bir nesnenin konumunu, yönelimini ve ölçeğini kontrol eder Node 3D sahnesinde. Her düğüm tam olarak bir Transform, şu aracılığıyla erişilir node.getTransform().

public class Transform extends A3DObject

Bir Düğümün Transform’una Erişme

import com.aspose.threed.Scene;

Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("box");
Transform t = node.getTransform();

Example

ExampleExampleExampleExampleExample
translationVector3getTranslation()setTranslation(Vector3)Üst düğümün orijinden konum ofseti. Varsayılan Vector3(0, 0, 0).
scalingVector3getScaling()setScaling(Vector3)Eksen başına tekdüze olmayan ölçek faktörü. Varsayılan Vector3(1, 1, 1).
rotationQuaterniongetRotation()setRotation(Quaternion)Dönüşüm bir birim quaternion olarak. Bunu ayarlamak aynı zamanda Euler açılarını da günceller.
eulerAnglesVector3getEulerAngles()setEulerAngles(Vector3)Dönüşüm dereceler cinsinden (X, Y, Z) Euler açıları olarak. Bunu ayarlamak aynı zamanda quaternion dönüşümünü de günceller.
preRotationVector3getPreRotation()setPreRotation(Vector3)Ana dönüşümden önce uygulanan Euler açıları (FBX rig’lerinde kullanılır).
postRotationVector3getPostRotation()setPostRotation(Vector3)Ana dönüşümden sonra uygulanan Euler açıları.
geometricTranslationVector3getGeometricTranslation()setGeometricTranslation(Vector3)Yalnızca yerel çeviri: geometriyi etkiler ancak alt düğümleri etkilemez.
geometricScalingVector3getGeometricScaling()setGeometricScaling(Vector3)Yalnızca yerel ölçek: geometriyi etkiler ancak alt düğümleri etkilemez.
geometricRotationVector3getGeometricRotation()setGeometricRotation(Vector3)Yalnızca yerel dönüşüm: geometriyi etkiler ancak alt düğümleri etkilemez.
transformMatrixMatrix4getTransformMatrix()setTransformMatrix(Matrix4)Tam birleşik 4x4 dönüşüm matrisi. Önbellekte; herhangi bir bileşen değiştiğinde yeniden hesaplanır. Bunu ayarlamak çeviri/ölçekleme/dönüşüme geri ayrıştırır.

Akıcı Ayarlayıcı Metotlar

Tüm ayarlayıcılar döndürür this, zincirleme yapmayı sağlar:

ExampleExampleExample
setTranslation(double tx, double ty, double tz)double, double, doublePozisyonu ayarla.
setScale(double sx, double sy, double sz)double, double, doubleÖlçeği ayarla.
setEulerAngles(double rx, double ry, double rz)double, double, doubleDönüşü derece cinsinden ayarla.
setRotation(double rx, double ry, double rz, double rw)double, double, double, doubleDönüşü bir quaternion olarak ayarla (x, y, z, w).
setPreRotation(double rx, double ry, double rz)double, double, doubleÖn rotasyonu derece cinsinden ayarlayın.
setPostRotation(double rx, double ry, double rz)double, double, doubleSon rotasyonu derece cinsinden ayarlayın.
setGeometricTranslation(double x, double y, double z)double, double, doubleGeometrik çeviriyi ayarlayın.
setGeometricScaling(double sx, double sy, double sz)double, double, doubleGeometrik ölçeği ayarlayın.
setGeometricRotation(double rx, double ry, double rz)double, double, doubleGeometrik rotasyonu derece cinsinden ayarlayın.

Kullanım Örnekleri

Bir Düğümü Konumlandırma

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));

Euler Açılarıyla Döndürme

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);

Quaternion ile Döndürme

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

Ölçek ve Konumu Birlikte Ayarlama

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);

Geometrik Ofset (Pivot Ofseti)

Geometrik dönüşümler, çocuğu düğümleri etkilemeden geometrinin düğümün pivotuna göre konumunu değiştirir; bir mesh’i düğüm içinde ortalamak için faydalıdır:

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);

Birleştirilmiş Transform Matrisini Oku

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

Ayrıca Bakınız

 Türkçe