Thứ tự chuyển đổi khi sử dụng Lớp biến đổi là gì?


7

Tôi hiện đang sử dụng Unity 5.5 lần đầu tiên trong một dự án và tôi đã gặp một số vấn đề liên quan đến chuyển đổi.

Tôi đã có một nền tảng về đồ họa 3D tổng quát hơn có nghĩa là tôi đã sử dụng để quản lý thủ công các biểu đồ cảnh và thứ tự chuyển đổi ma trận.

Vấn đề lớn nhất của tôi khi chuyển sang Unity và sử dụng Lớp Biến đổi được xây dựng của họ là tôi không thể tìm thấy bất kỳ thông tin nào liên quan đến thứ tự chuyển đổi của xoay, cục bộ, chia tỷ lệ, định vị, định vị và định vị.

Tôi không thể tìm thấy bất kỳ thông tin tốt về điều này và nó làm tôi hơi điên.

TL; DR: Thứ tự biến đổi của lớp Transform là gì?


Tôi đoán là họ tuân theo quy ước mà hầu hết các công cụ trò chơi sử dụng Translation * Rotation * Scalevà với những thứ địa phương tôi sẽ đoán(LocalTranslation * WorldTranslation) * (LocalRotation * WorldRotation) * (LocalScaling * WorldScaling)
Soacco

Câu trả lời:


9
  1. Quy mô địa phương ( localScale)

  2. Xoay cục bộ ( localRotation)

    Nếu sử dụng các góc Euler, chúng sẽ được áp dụng như các phép quay về các trục thế giới theo thứ tự :

    1. Cuộn (xoay quanh trục z thế giới)
    2. Cao độ (xoay quanh thế giới x trục)
    3. Yaw (xoay quanh trục y thế giới)


    (Hoặc, nếu bạn muốn nghĩ về các phép quay xảy ra quanh các trục cục bộ, thì đó là ...)

    1. Yaw (xoay quanh trục y cục bộ)
    2. Pitch (xoay về kết quả x trục địa phương)
    3. Cuộn (xoay về kết quả trục z địa phương)
  3. Bản dịch địa phương ( localPosition)

  4. Biến đổi cục bộ của cha mẹ, theo thứ tự như trên

Lặp lại tất cả các cách để gốc của hệ thống phân cấp chuyển đổi.

Các thông số phi địa phương, lossyScale, rotation, position, phản ánh tác động ròng của toàn bộ chuỗi chuyển đổi này ( lossyScalelà một xấp xỉ "lossy" Kể từ đó, bởi thời điểm đó, chúng tôi đã kết hợp nhiều quy mô và phép quay, quy mô kết quả là không đảm bảo được trục canh , do đó, nó có thể không còn được thể hiện tốt bởi Vector3)


2

Hãy xem hướng dẫn của Thanh tra tại đây https://unity3d.com/learn/tutorials/topics/interface-essentials/inspector

và hãy xem tại đây https://docs.unity3d.com/Manual/UsingTheInspector.html

Bạn có tất cả các thông tin cần thiết trực quan về:

  • Biến đổi vị trí (X, Y, Z)
  • Biến đổi góc quay dưới dạng góc euler (X, Y, Z)
  • Chuyển đổi tỷ lệ (một lần nữa, X, Y, Z)

4
Mặc dù các tham chiếu này hữu ích, nhưng câu trả lời này không thực sự mô tả thứ tự áp dụng các phép biến đổi (điều này quan trọng vì một số phép biến đổi không giao hoán - thực hiện các thao tác giống nhau theo một thứ tự khác nhau có thể cho kết quả khác nhau). Unity có một quy ước cụ thể cho thứ tự sắp xếp các thuộc tính biến đổi khác nhau của nó.
DMGregory

1

Bạn có thể in ra localToWorldMatrix. Nếu cột ngoài cùng / thứ 4 chứa transform.position, thì bạn biết bản dịch đã được áp dụng lần cuối, tức là

localToWorldMatrix = translationMatrix * rotationMatrix !=  rotationMatrix * translationMatrix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.