我试图在 2D 环境中模拟 3D 变换,因此我尝试自己完成 3D 部分的计算
为了参考,我使用了 Node3D 来检查我的计算方法是否正确
func calc_transform_3d(position_3d:Vector3, rotation_3d:Vector3, scale_3d:Vector3 ) -> Transform3D:
var transform_3d := Transform3D(
Basis.from_euler(rotation_3d).scaled(scale_3d),
position_3d
)
return transform_3d
func _ready():
var node_3d:Node3D = $Node3D
var custom_transform := calc_transform_3d(node_3d.position, node_3d.rotation, node_3d.scale)
print(custom_transform == node_3d.transform) # returns false
但是该calc_transform_3d()
方法给出了错误的输出(仅供参考,我检查过这不是浮点错误)
那么仅给定和position
,如何计算 Transform3D(类似于 Node3D 的计算方式)?rotation
scale