gpt4 book ai didi

physics - 3D 图形引擎的此属性的名称和最常见的实现是什么?

转载 作者:行者123 更新时间:2023-12-02 17:04:14 25 4
gpt4 key购买 nike

我想说“不受限制的参照系”或“空间相关的独立子环境”,但我认为这些都是不对的。

想象两艘长的圆柱形宇宙飞船彼此相邻地漂浮在同一方向的水平面上。每艘船都有自己的一组房间和走廊,玩家可以在第一人称环境中自由移动。透过 window ,每艘船的船员都可以微笑着向另一艘船的船员挥手。

第一艘船发射推进器并移至第二艘船下方。两艘船靠岸,气闸门打开。第一艘船的船员现在需要爬上第二艘船。气闸关闭,船只分离。

第一艘船再次移动,只是这次它停靠在第二艘船的顶部。气闸打开,这一次第一艘船的船员需要向下进入第二艘船。

每艘船都是一个独立的 3D 环境,它与更大的全局环境中的其他独立环境进行交互。

我看到两种可能的实现。

1)“插入者”。每艘船都会对其内部的每个物体施加力。当第一艘船相对于第二艘船移动时,该移动会传递给船员以改变他们的全局空间位置。这看起来计算成本很高......

2)“伪造者”。每艘船的 window 都显示来自虚拟全局空间的模拟输出,但船及其内容物并没有真正相对于彼此移动。船舶之间的连接是一个动态门户,以正确的方向连接两个船舶“房间”。

该属性的名称是什么?我在哪里可以找到现实生活中的 3d 引擎示例?

最佳答案

许多 3D 引擎通过 scene graph 来处理这个问题。在大多数场景图中,您将拥有父“节点”,每个节点都包含子节点,在这种情况下,每艘船都是一个节点,船内的人员、房间、家具等都是子节点。

child 的位置是相对于 parent 指定的。这使得“移动”船变得很简单,因为您只需移动船,它的子级就会随之移动(就它们而言,不会改变它们的位置)。

在您的示例中,“向上”和“向下”部分只是局部向上或向下移动。在某些时候,当您穿过气闸室时,您会将 child 从一个父级(船)移动到下一个父级(另一艘船),并更改其位置(即:从船1的底部 0,0 ,-20 到 2 号船的“顶部”0,0,20 等)。

OpenSceneGraph Quick Start Guide对这个概念有很好的讨论。

<小时/>

编辑:

作为相关补充,许多面向游戏的 3D 引擎,例如 Ogre ,还提供处理定制的方式space partitioning在他们的场景图中。例如,开箱即用的 Ogre 允许您在场景中使用 Bsp 和八叉树分区器,这就是他们处理一艘船上的人看不到(更重要的是,甚至不尝试渲染)第二艘船的方式如果有墙挡住等等。对于像您的示例这样的事情,如果您想在复杂场景中保持高帧速率,则使用空间分区进行剔除至关重要。

关于physics - 3D 图形引擎的此属性的名称和最常见的实现是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/948084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com