[回到版面]
回應模式
名 稱
E-mail
標 題
內 文
附加圖檔[] []
刪除用密碼(刪除文章用。英數字8字元以內)
  • 可附加圖檔類型:GIF, JPG, PNG, JPEG,瀏覽器才能正常附加圖檔
  • 附加圖檔最大上傳資料量為 2000 KB。當回文時E-mail填入sage為不推文功能
  • 當檔案超過寬 125 像素、高 125 像素時會自動縮小尺寸顯示
  • 程式碼可使用 [code][/code] 以 google-code-prettify 標亮 (程式自動判斷語言類別)

  • 公告、舉報、建議請向DB管理室辦理。
  • 本板討論遊戲製作為主,改造方面也可討論,但如果牽涉到版權,請自重。
  • 3D建模請至3D板, 3D遊戲製作(Ex.怎麼用DirectX跑3D?)則可在這討論。
  • 本板為一般向板面,禁止張貼上車圖。

檔名:1512947940711.jpg-(102 KB, 440x638) [以預覽圖顯示]
102 KB無標題 名稱: 無名氏 [17/12/11(一)07:19 ID:cHtZymfg] No.13095 5推 [!] 
unity問題
請問已知一物體上一個frame和今個frame 的rotation和position
求兩frame之間該物件對自己移動了多少的Vector3
(不是兩個position相減,是問上一個frame該物件用transform.translate(答案,space.self)中的答案)

數學太爛,想不到答案
無名氏: 沒用過unity, 但你第一行的position是world space吧? (VSKEIM3A 17/12/11 19:41)
無名氏: 應該是 (cHtZymfg 17/12/11 19:46)
無名氏: 能圖解一下嗎 看不太懂你的提問 (4jc9t0Mc 17/12/11 21:40)
沒用過unity: 既然知道兩個frame的world space position , 為什麼不能相減啊 (MHNa2zoQ 17/12/12 00:18)
沒用過unity: transform.translate看起來是object的local space 但也不影響 (MHNa2zoQ 17/12/12 00:20)
無標題 名稱: 無名氏 [17/12/11(一)21:49 ID:cHtZymfg] No.13098  [!]  
實際上我的project不存在這段code,為大家好理解而寫

已知以下數值
Vector3 lastFramePos;//last frame position
Vector3 currentPos;//current position
Quaternion lastFrameRot;//last frame rotation
Quaternion currentRot;//current rotation

如果上一個frame中
該object用了一次transform.translate(答案,Space.Self);
求答案
(理論上,求解過程應該不會用到currentRot)
無標題 名稱: 無名氏 [17/12/12(二)02:18 ID:UEymKxXQ] No.13099 16推 [!]  
>>MHNa2zoQ
因為假設物件在(0,0,0),面向右面,再用一次
transform.translate(Vector3.forward,Space.Self)
實際上是和用了一次
transform.translate(Vector3.right,Space.World)
一樣移到了(1,0,0)

兩個position相減時,會得到Vector.right
但我要的答案是Vector3.forward

這樣說會不會比較好理解?
無名氏: 一個比較懶得想的作法是你每次用transform.translate的時候自己維護一個相對位移 (F5PAlomc 17/12/12 05:58)
無名氏: 實際上沒有做transform.translate,我只是讓你好理解才說transform.tran (UEymKxXQ 17/12/12 18:17)
無名氏: 因為其實位置、方向其實是從networkTransform拿來的 (UEymKxXQ 17/12/12 23:49)
無名氏: 因為位置和方向是從networkTransform拿來的 (UEymKxXQ 17/12/12 23:50)
無名氏: 不知道為什麼沒辦法發回應,所以把回應發在其他地方用推文給你 (eZF32R/Y 17/12/13 03:08)
無名氏: https://paste.plurk.com/show/2593128/ (eZF32R/Y 17/12/13 03:08)
無名氏: 突然想到,乘出來的各個向量可能要對他們做一次Normalize也說不定 (eZF32R/Y 17/12/13 03:32)
無名氏: 如果沒做處理算出來的值是你目標的N倍的話,大概就是因為作為標準的向量取錯了,這方面可以注意一下 (eZF32R/Y 17/12/13 03:34)
無名氏: 數學上不知你對不對,但unity的rotation是4D Vector(x,y,z,w) (Ibz66b1U 17/12/13 04:02)
無名氏: 好像不可以rotation*position (Ibz66b1U 17/12/13 04:02)
無名氏: 應該可以吧,Quaternion*Vector3是進行Quaternion Transform的意思 (eZF32R/Y 17/12/13 04:25)
無名氏: 我記得我以前有寫過類似的Code,這個行為的意義可以參考這邊 (eZF32R/Y 17/12/13 04:27)
無名氏: http://bit.ly/QmulV (eZF32R/Y 17/12/13 04:27)
無名氏: 不過使用的時候要注意這個動作是沒有交換率的,r*v不能寫成v*r (eZF32R/Y 17/12/13 04:28)
無名氏: 你可能說得對,但我好像沒program 能力應用你的答案... (Ibz66b1U 17/12/13 04:59)
無名氏: 另外,你可以試試https改成http再回文 (Ibz66b1U 17/12/13 05:12)
無標題 名稱: 無名氏 [17/12/13(三)06:20 ID:eZF32R/Y] No.13100 8推 [!]  
>>No.13099

後來仔細想想其實可以利用Unity內建的東西來達成
看你好像很為難就順便幫你寫了
https://paste.plurk.com/show/2593144/

主要是這個東西還滿有趣的就是拉~~~~~
祝你順利~
無名氏: 阿改成http真的就能直接回了太好了 (eZF32R/Y 17/12/13 06:23)
無名氏: 以及其實本來吧要把worldSpace轉回localSpace (eZF32R/Y 17/12/13 06:25)
無名氏: 用的是transform.worldToLocalMatrix來處理的 (eZF32R/Y 17/12/13 06:26)
無名氏: 但因為我不確定你在兩個frame之間有沒有改變rotation (eZF32R/Y 17/12/13 06:26)
無名氏: 所以就只能用這樣的形式來算了 (eZF32R/Y 17/12/13 06:26)
無名氏: 我想應該還會有更好的處理模式吧,不過我姑且只能想到這種程度 (eZF32R/Y 17/12/13 06:27)
無名氏: 希望對你有幫助~ (eZF32R/Y 17/12/13 06:27)
無名氏: 萬分感謝,拜你所賜完美地做好了,順帶一提,我Vector方面的數學知識是零 (Ibz66b1U 17/12/13 08:41)

【刪除文章】[]
刪除用密碼:

第一頁[0] 最後一頁