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