level 1
B1:这一帧人物位置 向量A1B1是原先设置好的
正确的
角度
B2:下一帧人物位置(镜头旋转+人物不移动)
B3下一帧人物位置(镜头旋转+人物移动)
控制|A1B1| = |A2B2|=|A3B3|(人物与摄像机的相对距离固定)
蓝色:A1 B1 这一帧 的向量(角度)
红色: A2 B2镜头旋转,人物不移动的下一帧 的向量(角度)
黑色A3B3 镜头旋转+人物移动的下一帧 的向量(角度)
1.摄像机绕人物y轴旋转情况下。
每帧刷新摄像机与人物的偏移量 offset(原因是每帧的人物与摄像机的向量都不同,但是与地面的夹角不变)
Offset = |A2B2| 的标准化 * 距离
摄像机位置 = 人物位置 + offset(正确)
2.摄像机绕人物旋转情况下,人物移动
每帧刷新摄像机与人物的偏移量 offset(原因同上)
但如果再用 1 中的方法 Offset = |A3B3|的标准化 * 距离)
摄像机位置 = 人物位置 + offset(错误)
这时候就会出现问题,在固定人物与摄像机的相对距离的时候,这个向量会随着人物远离(摄像机方向)或靠近(摄像机方向)使得与地面的夹角发生变化,用极限法的思维去看待可以明显知道这个角度会趋于0或者90度(即人物与摄像机之间的y轴差距)
那如何获取 镜头旋转下的,人物移动后的正确的 人物与摄像机的向量呢,然后给摄像机赋予正确的position呢?
2018年04月19日 16点04分
4
其实你要实现的功能并不复杂,不过分析得很复杂。
2018年04月24日 13点04分
level 1
在摄像机旋转过程中,如果人物移动了。不知道该制定新的摄像机的跟随位置。
2018年04月19日 16点04分
7
level 1
就是摄像机在以人为圆心、固定的半径上转吧
首先你需要给摄像机指定一个角速度ω,接着记录当前摄像机水平位置
然后按固定圆心(如起始位置的圆心)计算这一帧摄像机 转动角速度x单帧时间 后的位置,
注意这个角速度的正负应该是和人物前进后退是一致的吧?
计算出摄像机的高度 和 相对上一帧的水平位置的变化量
摄像机的当前位置 = x=摄像机转过水平距离+人移动过水平距离,y=摄像机的高度
或者有一个偷懒的办法:
给摄像机设置一个水平动态的速度v,离人距离L越近,速度v越慢,
比如 v = L/R,L越小、半径R固定,v就越小;
摄像机单帧移动的距离 s = v t (单帧时间)
摄像机水平位置x = s + V(人的速度)t (单帧时间) + 人的当前位置x,注意人移动的方向改变正负号
然后根据人的位置为圆心,半径R 和计算摄像机水平位置x,计算摄像机的高度y 就可以了
2018年04月24日 09点04分
8