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

Java raycasting引擎Floorcasting地板纹理不随视角滚动异常

Java射线投射渲染器地板不随视角移动问题

问题描述

  • 基于Java开发射线投射(Raycaster)渲染器,目前已实现地板的正确纹理映射,但存在视角移动时地板静止的异常:在投影场景中移动相机时,地板画面始终保持固定,仅墙体可按预期随相机位置同步位移,暂未定位问题根源。
  • *地板投射(Floorcasting)*模块的绝大多数逻辑参考公开射线投射教程编写,移植代码时做了少量简化,部分逻辑使用伪代码表述。
  • 曾尝试为tileX、tileY变量叠加玩家位置偏移,例如编写tileX += player.x类逻辑,但最终渲染出的地板滚动速度远高于正常值,效果完全错误。

相关实现代码

for every ray:
   ... // 上方为墙体渲染相关逻辑
   int start = (int)(wallY + wallHeight + 1);
   double directionCos = cos(rad(ray.getAngle()));
   double directionSin = sin(rad(ray.getAngle()));
   int textureDim = 16;
   for (int y = start; y < screenHeight; y++) {
       double distance = screenHeight / (2.f * y - screenHeight);
       distance /= cos(rad(player.getAngle()) - rad(ray.getAngle()));
       // 参考源码逻辑为将玩家x、y坐标叠加到tileX、tileY变量上,但尝试该操作时纹理完全错乱
       double tileX = distance * directionCos;
       double tileY = distance * directionSin;

       int textureX = Math.floorMod((int)(tileX * textureDim), textureDim);
       int textureY = Math.floorMod((int)(tileY * textureDim), textureDim);
       int rgb = floorTexture.getRGB(textureX, textureY);
       projectionFloor.setRGB((int)wallX, y, rgb);
  }

效果参考

  • 静态场景下地板纹理渲染正确:静态地板正确渲染效果
  • 故障表现:移动视角时地板完全静止,仅墙体同步移动:地板静止故障演示
  • 直接叠加玩家位置偏移后的异常效果:偏移叠加后渲染错误演示

内容的提问来源于stack exchange,提问作者Joshua Crotts

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:57:20