故事
所以我正在制作一個程式地形生成器腳本以在地面上生成巖石所有大巖石都不關心它們是什么旋轉但我有一些必須與地形平行的小巖石,否則它們看起來很奇怪,一部分漂浮在地面上另一部分卡在地面上四元數我似乎不明白
問題
我得到了terrainData.GetInterpolatedNormal并將其放入一個稱為法線的vector3然后當我生成我的巖石時我將它旋轉到地面
Instantiate(SmallRock, new Vector3(point.x, Heights, point.y) transform.rotation = new Quaternion(normals.x,normals.y, normals.z, 90));
我的問題就出在四元(normals.x,normals.y,normals.z,90) 我不知道要放什么東西在那里等應我只把normals.x / Z有或應該我把normals.y也在那里,我什至不知道最后的90做了什么,是的,我知道插值法線回傳 0 到 1,所以我嘗試將它相乘以使其旋轉超過 1,但它似乎只是不向右旋轉如果你現在還不能告訴我,我真的不知道四元數是如何作業的,但是無論我在哪里搜索,我都找不到任何有幫助的東西,而且我真的不想了解四元數是如何作業的,所以謝謝你為我節省了時間
uj5u.com熱心網友回復:
四元數使用復合(虛數)數來表示 3d 空間中的旋轉序列。
當您Quaternion使用它的建構式實體化一個 new 時,您正在為它提供您認為Quaternion的實數和虛數應該是什么。
盡管您不應手動修改或提供這些看似熟悉的x、y和z名稱,但它們不是歐拉角、笛卡爾坐標或傳統的矢量分量。
您當前傳遞的是方向的一部分,而不是 a 的實部和虛部Quaternion。
法線是從給定位置的“向外方向”。所以為了得到一個旋轉,我們需要一些其他的方向來比較它以獲得一個旋轉。
將您的方向與向上方向進行比較,您將獲得可以使用的旋轉。
Quaternion rotation = Quaternion.FromToRotation(Vector3.up, normalDirection);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/405087.html
標籤:
上一篇:統一。首次安裝時為游戲分配資料?
