我想说"不受限制的参考框架"或"空间相关的独立子环境",但我不认为这些是正确的.
想象一下两个长而圆柱形的太空船在一个水平面上相互浮动,方向相同.每艘船都有自己的房间和走廊,玩家可以在第一人称环境中自由移动.透过窗户看,每艘船的船员都可以向另一艘船的船员微笑并挥手.
第一艘船发射推进器并在第二艘船下移动.两艘船停靠,气闸打开.第一船的工作人员现在需要爬起来进入第二艘.气闸关闭,船只分离.
第一艘船再次移动,只是这次它停靠在第二艘船的顶部.气闸打开,这次第一艘船的船员需要向下移动到第二艘船.
每艘船都是一个独立的3d环境,它与更大的全球环境中的其他独立环境进行交互.
我看到两种可能的实现.
1)"移动者".每艘船对其内部的每个物体施加一个力.当第一艘船相对于第二艘船运动时,该运动被转换为船员以改变其全球空间位置.这看起来很贵......
2)"骗子".每艘船的窗口都显示虚拟全球空间的模拟输出,但船只及其内容并未真正相对于彼此移动.船舶之间的连接是一个动态门户,以正确的方向连接两个船舶"房间".
这个属性的名称是什么?我可以在哪里找到真实3D引擎中的示例?
许多3D引擎通过场景图来处理这个问题.在大多数场景图中,您将拥有每个包含子项的父"节点",在这种情况下,每艘船都是一个节点,并且船内的人员,房间,家具等是儿童.
儿童的职位是相对于父母的.这使得"移动"船只变得微不足道,因为你只是移动了船,并且它的孩子随之移动(就他们而言,没有改变他们的位置).
在您的示例中,向上和向下部分只是在本地向上或向下移动的问题.在某些时候,当您通过气闸时,您将孩子从一个父母(船)移动到下一个父母(另一个船),并改变它的位置(即:从船的底部1在0,0 ,-20到0,0,20等船2的"顶部").
该OpenSceneGraph的快速入门指南有这个概念的一个很好的讨论.
编辑:
作为相关的补充,许多面向游戏的3D引擎(例如Ogre)也提供了在其场景图中处理自定义空间分区的手段.例如,Ogre,开箱即用,允许您使用Bsp和八叉树分区器进行场景,这就是他们如何处理一艘船上没有看到(更重要的是,甚至没有尝试渲染)第二艘船的人如果在路上有墙,等等.对于像你的例子这样的事情,如果你想保持一个复杂场景的高帧率,使用空间分区来剔除是至关重要的.