Tôi đang làm việc trên trình thông dịch L-system và tôi sử dụng quaternion làm biểu diễn quay nội bộ. Tôi cần xuất kết quả sang cảnh JavaScript baJs và tôi thấy cảnh json là cách tốt nhất để làm điều đó.Cách sử dụng xoay quaternion trong cảnh json Three.js
Tôi đã tìm thấy một ví dụ về cảnh trên https://github.com/mrdoob/three.js/blob/master/examples/scenes/test_scene.js nhưng không có gì về xoay vòng quaternion.
Vì vậy, tôi đã sử dụng sự giúp đỡ tại http://threejs.org/io/s/quaternion và tìm thấy, rằng THREE.Object3D có tính quaternion và useQuaternion nhưng Nó có vẻ không hiệu quả, sai số được nâng lên bởi cảnh nạp (có lẽ vì thiếu "xoay vòng "thuộc tính, xem EDIT ở cuối):
"obj": {
...
"quaternion": [0.38268343236509,0,0,0.923879532511287],
"useQuaternion": true
}
tôi cũng đã cố gắng để chuyển đổi quaternion đến góc Euler nhưng It wont làm việc đối với tôi, có lẽ vì trật tự khác của việc áp dụng các góc (tôi giả sử để Y, Z, X). Trong ví dụ trên, quaternion đại diện cho phép quay về trục Z (độ dốc) bằng 135 độ được chuyển thành góc Euler [pi, pi, pi/4] nhưng nó được hiển thị không chính xác trong cảnh.
Hình sau hiển thị các khối được xoay nhiều hơn 11 độ so với trục Z khác. Các trục là X (đỏ), Y (xanh lục) và Z (màu xanh lam). Nửa trên được xoay không chính xác do quaternion chuyển đổi không chính xác thành Euclid (tôi đã sử dụng trang này để thực hiện: http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/).
EDIT: Sau khi kiểm tra thêm lỗi do trình tải cảnh bị thiếu do thiếu thuộc tính "xoay vòng" trên đối tượng. Sau đầu ra không ném lỗi và cảnh được nạp nhưng nó sai (theo cách giống như hình ảnh được hiển thị) vì xoay vòng quaternion bị bỏ qua.
"obj": {
...
"rotation": [3.14159265358979,3.14159265358979,0.785398163397449],
"quaternion": [0.38268343236509,0,0,0.923879532511287],
"useQuaternion": true
}
Có nhiều thông báo lỗi do trình tải cảnh nâng lên hay không, điều gì đó nêu rõ cụ thể những gì nó không thích về việc sử dụng quaternions? –
Ok, lỗi xảy ra do thiếu thuộc tính "xoay vòng". Trình tải cảnh có thể không tải các phép quay quaternion. – NightElfik