问题标签 [2.5d]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1697 浏览

java - 画布上的透视图

今天我带来一个关于伪3D和透视的主题。

我正在查看视频#1 Java Classical 3D Rendering Tutorial:Creating 3D World,他使用了一种渲染伪 3D 天花板和地板的方法。我试图找到一些教程或他使用的方法的名称,但我没有找到。我看到了算法,但不清楚理解。我开始搜索透视图形(消失点、地平线……),但我得到的独特之处是静态绘图。我想应用一个错觉移动将相机放在计划内并移动它。下面跟随一个关于我想做的透视地板和天花板的例子。

静态透视图 静态透视图

这只是一个图像,但我的第一个问题是:“我真的可以在这种环境中移动相机,比如旋转和移动 x 轴和 y 轴?”。我试图在画布上制作 2 个消失点,为每个 15º 度创建线条,我得到了透视错觉,但我找不到进行旋转或运动的方法。在那个视频中,我看到像素只使用绿色和蓝色来创建二维,但我想使用线条来制作它,以了解它是如何工作的。

在此处输入图像描述

没有一个地方可以一步一步地教如何用动作来制作透视图。我没找到。我用视频的方法查看了Java 3D游戏制作者和Markus Person创建名为“前奏曲”的游戏的视频,但我没有找到这个渲染之王的解释。

在此处输入图像描述

假设我必须使用网格创建一个计划。我必须在线条中应用的逻辑是如何创建运动的?我真的很想了解制作这种伪 3D 的逻辑,而不使用框架或类似的东西。谢谢你帮助我!我会等待你的答复。

我检查了一些关于 SNES 模式 7 的信息。我认为这是一个很好的方法。我只需要了解它是如何工作的,以及如何进行旋转。

在此处输入图像描述

** 注意:我不为它使用光线投射。我将使用光线投射来创建墙壁。

0 投票
3 回答
14312 浏览

c# - 如何修复Unity中的“'GameObject'类型的对象已被破坏,但您仍在尝试访问它”错误?

我正在使用 C# 在 Unity 中创建一个 2.5D 格斗游戏。目前,我正在尝试让玩家周围出现一个保险杠,并在一段时间后消失。我已经设法让保险杠出现和消失一次,但是在那之后,当我尝试让保险杠再次出现时,Unity 对我有一个错误:“'GameObject' 类型的对象已被破坏,但你仍在尝试访问它。”

根据“Brackeys”关于 2D 拍摄的教程,我尝试使用“实例化”和“销毁”命令。在论坛上也关注了一些关于同一问题的问题之后,我再次更改了我的代码,但问题仍然存在。

firePoint一个空对象,从中实例化 BumperPrefab。

}

我希望游戏对象“BumperPrefab”会出现,停留 0.2 秒然后消失。我应该可以重复多次,但实际发生的是我只能这样做一次,然后出现错误“'GameObject'类型的对象已被破坏,但您仍在尝试访问它”出现了,我不能让 BumperPrefab 再次出现。

任何帮助深表感谢!

0 投票
2 回答
144 浏览

animation - Windows 合成 API 是否支持 2.5D 投影旋转?

我已经开始在 UWP 应用程序中使用 Windows 组合 API 来为 UI 的元素设置动画。

视觉元素公开 RotationAngleInDegrees 和 RotationAngle 属性以及 RotationAxis 属性。

当我围绕 Y 轴为矩形对象的 RotationAngleInDegrees 值设置动画时,矩形会按预期旋转,但在 2D 应用程序窗口中,它似乎没有显示为 2.5D 投影。

有没有办法使用组合 api 获得旋转的 2.5D 投影效果?

0 投票
1 回答
208 浏览

opencv - 如何从单个 PNG 中分离大小为 8 和 16 的两个位图

我有来自 SICK Trispector 深度激光扫描仪的图像。图片格式为PNG。SICK 称之为 Trispector 2.5D PNG。根据 SICK 的文档,这些图像包含反射数据和深度数据。但 SICK 不会提供有关如何在不使用其或合作伙伴的软件的情况下使用这些数据的信息。本质上,我需要的是深度数据。反射数据可能很好,但不是必需的。我得到的结果图像是单色的。图像顶部似乎有反射数据,底部有重叠高度数据。扫描的对象是一箱带瓶盖的啤酒瓶。你可以在这里看到一个例子:

扫描图像

我尝试在许多不同的图像查看器中打开图像并查找有关 2.5D 的信息,但它似乎与此无关。在 Matlab 图像预览中,我分别获得了高度数据的一侧,但我不知道如何使用这些信息。从 Matlab 预览中查看以下图像:

扫描图像的 Matlab 预览

有谁知道如何从这样的图像中推断高度数据?可能有人以前用过 SICK 的 SOPAS 或 SICK 扫描仪,了解这种 SICK 称之为“2.5D PNG”的格式。OpenCV 解决方案会很好。

编辑:正如@DanMašek 评论的那样,问题在于将两个不同位深度的图像从一个PNG 中分离出来。他提供了对该问题的进一步洞察,并提供了一个出色的 OpenCV 解决方案,用于将强度和深度图像分别分离为 8 位和 16 位:

使用@DanMašek 的方法正确分离强度和深度图像

0 投票
0 回答
132 浏览

python - 是否有任何工具或算法可以将 3D 点云转换为 2.5D 图像?

我正在寻找一种在 Python 中将 3D 点云转换为深度图像的算法,尤其是 3D 人脸点云。你能给我一些工具或算法吗?提前致谢。

0 投票
0 回答
139 浏览

javascript - javascript raycaster 引擎中的鱼眼协作

我正在使用画布在 javscript 中构建 raycastin 引擎,我构建了 raycaster 及其完全工作,除了一个问题,有鱼眼效果,我尝试进行更正

但它不会产生任何结果:

当我运行它时的光线投射器

我仔细检查了数学,我没有发现任何问题,但我可能仍然做错了,因为我在七年级并且还没有学到很多关于三角学的知识,(只参加了可汗学院的课程)所以有人可以让我知道是否有更好或更简单的方法来做到这一点,提前谢谢你。

(我也认为我可能做错了阴影,如果有人能帮忙的话。)

编辑:我忘了包括你可以使用 WASD 键来控制演示,并且图像被翻转,但这将是一个简单的修复。 如果您需要,我的完整代码:

0 投票
1 回答
58 浏览

c# - 玩家在半空中冲刺后几乎无法控制角色

我现在正在开发一个 2.5D 播放器控制器,但我在半空中的仪表板有问题。破折号有效,但在破折号完成后,角色无法在 X 轴上完全控制,直到他们撞到地面。我希望玩家在破折号后立即完全控制 X 轴,以便他们可以适当地躲避。

任何关于代码优化的提示也非常感谢。我对编码还很陌生,我宁愿在必须改掉坏习惯之前学习适当的编码习惯。谢谢!

0 投票
0 回答
64 浏览

python - 校正鱼眼效果 2.5D

我正在制作像 Wolfenstein 3D 这样的 2.5d 光线投射引擎。我需要帮助来纠正鱼眼效应。我了解正在发生的事情,并做了自己的数学来尝试摆脱它,但它并没有完全摆脱这种影响:“n *= math.cos(fish_eye/(180/3.1415))” n 是欧几里得距离和 fish_eye 从 45 到 0 到 45(90 度 FOV)“/(180/3.1415)”是从度数转换为弧度。当你离得更远一点时,鱼眼看起来还不错,但当你靠近时,你很难判断它应该是 3D 的。

这是我写的代码(请不要告诉我它有多糟糕,我完全没有做任何事情来让它更快或更漂亮):

我看过很多溢出的帖子,但要么我无法理解它们,要么它不起作用。

这是一张照片:

鱼眼的图片

如果你愿意,你可以将上面的代码复制并粘贴到 pycharm 或其他代码运行器中。只要记住安装所有导入(:

0 投票
1 回答
130 浏览

javascript - 伪3D相机转动

我正在尝试学习使用 HTML 2D 画布在 JavaScript 中制作 3D 游戏。我正在关注这篇关于它的帖子,并制作了一个简单的场景,您可以在其中移动。

我需要帮助的是弄清楚如何制作玩家转过头、左右看和身后的效果。

这是我所拥有的:

代码笔链接

代码(也在 codepen 上)

html:

javascript

0 投票
1 回答
42 浏览

python-3.x - 相机与 y 轴的角度水平旋转

我目前正在使用 pygame 创建一个 persudo 3D 道路,并且我正在尝试将 y 轴上的相机从 0 度旋转到 360 度。但是当与 y 轴的相机角度大于 90 度时,我在屏幕上看到的图像会翻转,向前移动实际上会导致相机向后移动......

我对 180 角度的期待是相机“背后”的东西,而这不是我得到的。

这是我用来投影和旋转世界的代码,我的猜测是我的数学在某个地方是错误的,因为 sin/cos 的属性,但我找不到导致问题的原因......

只有相机的 Y 角与 0 不同。对于道路,我只存储一个点 - 所以对于道路的每一部分,我都在投影一个点。