You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

相机旋转时位置偏移的渲染问题求助

相机旋转时Player位置偏移的渲染问题求助

我正在排查相机左右旋转时出现位置偏移的问题,经检查Player的x、y坐标在旋转过程中并未发生变化,因此判定这是一个渲染问题。我需要实现旋转时Player位置保持不动的效果,恳请各位提供技术帮助。

渲染代码片段

import math as M

radcos = M.cos(pa/180*M.pi)
radsin = M.sin(pa/180*M.pi)

wallx = [0,0,0,0] # 墙体x坐标
wally = [0,0,0,0] # 墙体y坐标
wallz = [0,0,0,0] # 墙体z坐标
wx1, wy1 = 40-px, 10-py
wx2, wy2 = 40-px, 290-py
socialdistfromcameradist = 0.1

wallx[0] = wx1 * radcos - wy1 * radsin
wallx[1] = wx2 * radcos - wy2 * radsin
wallx[2] = wallx[0]
wallx[3] = wallx[1]

wally[0] = wy1 * radcos + wx1 * radsin
wally[1] = wy2 * radcos + wx2 * radsin
wally[2] = wally[0]
wally[3] = wally[1]

if wally[0] <= socialdistfromcameradist and wally[1] <= socialdistfromcameradist:
    return

near = 0.1

if wally[0] < near:
    wally[0] = near

if wally[1] < near:
    wally[1] = near
    
if wally[2] < near:
    wally[2] = near

if wally[3] < near:
    wally[3] = near

wallz[0] = 0-pz+((pl*wally[0])/32)
wallz[1] = 0-pz+((pl*wally[1])/32)
wallz[2] = wallz[0]+40
wallz[3] = wallz[1]+40

# 计算墙体在屏幕上的坐标(顶部和底部)
wallx[0] = wallx[0]*FOV/wally[0]+600
wally[0] = wallz[0]*FOV/wally[0]+400
wallx[1] = wallx[1]*FOV/wally[1]+600
wally[1] = wallz[1]*FOV/wally[1]+400
wallx[2] = wallx[2]*FOV/wally[2]+600
wally[2] = wallz[2]*FOV/wally[2]+400
wallx[3] = wallx[3]*FOV/wally[3]+600
wally[3] = wallz[3]*FOV/wally[3]+400

完整代码可参考原提问中的完整实现。

内容的提问来源于stack exchange,提问作者CyberWolf Games aka Cybrock900

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 05:54:51