Re: [閒聊] 王國之淚去年延期時已接近完成

作者: pponywong (pony)   2023-05-22 12:38:01
※ 引述《hylkevin (19s)》之銘言:
: → spfy: 雖然有人解釋但我還是想不通倒轉要怎麼實作 不可能把林克附
: → spfy: 近所有物件的軌跡都長期記錄起來吧?
: 記錄一個物件在空間中的姿態(pose: 包含位移跟旋轉)
: 一般是用一個4x4的浮點數(float: 有小數點的數字, 4 byte)矩陣
: 也就是說紀錄一筆位置, 記憶體大小是4x4x4=64 byte
對不會改變大少,伸縮的物件而言
一般用 2 個 vector3 就好了, 6 個float浮點數, 6x4=24byte
struct vector3
{
float x, y, z;
};
struct location_t
{
vector3 position;
vector3 orientation;
};
: 假設他每秒記錄30筆pose (30fps), 並假設每個可移動物件都紀錄10秒
: 則一個物件的時間倒轉記錄是64x30x10=19.2 kbyte
: 超過一定距離的物件不能時間倒轉, 甚至都不會載入
: 所以假設他同時間最多有1000個物件會被載入(實際上應該沒這麼多)
: 他用來存時間倒轉資訊的總記憶體用量在每個時刻都不會超過19.2mbyte
: 由此可知時間倒轉其實負擔並不大
: 對於一個現代的系統來說, 19mb通常是可以忽略的大小
這個要看遊戲引擎跟物理引擎怎麼寫
場景物件不見得都會被記錄 尤其是最佳化過的遊戲
不過記憶體就上面算的 並不是很大的量
拿波斯王子舉例 20年前的遊戲 都可以記錄王子跟附近敵人10秒的運動軌跡
TOTK 只需要紀錄10秒內 經過物理引擎計算的物件就好
作者: hylkevin (19s)   2023-05-22 12:42:00
orientation你用vector3是用euler angle記錄吧?但eulerangle其實有萬象鎖問題,所以一般是用vector4的四元數(quaternion)
作者: WiLLSTW (WiLLS)   2023-05-22 12:44:00
用quaternion還可以方便做投影 算一舉兩得
作者: cauliflower (菜花)   2023-05-22 12:52:00
開始聽不懂了XD
作者: lbowlbow (沉睡的小貓)   2023-05-22 12:53:00
開始進入程式版的領域
作者: galiyo (世界甜)   2023-05-22 13:04:00
差點以為進錯版
作者: spfy (spfy)   2023-05-22 13:08:00
懂...懂了(並沒有)
作者: slainshadow (絲魅舞風)   2023-05-22 13:21:00
我懂了…不 我不懂
作者: cloudin (☁雲應)   2023-05-22 14:24:00
完全聽不懂了哈哈哈哈
作者: aegis123321 (PE)   2023-05-22 15:10:00
儲存用不用quaternion倒是無所謂 計算的時候轉就好主要還是看物理引擎本身儲存的格式 能不用多轉最好

Links booklink

Contact Us: admin [ a t ] ucptt.com