Math 在三维平面上应用射影变换
场景Math 在三维平面上应用射影变换,math,matrix,3d,three.js,Math,Matrix,3d,Three.js,场景 我有一个3D环境,其中包含一个3D场景和一个“2D”场景。 3D场景包含一个立方体和一个透视摄影机。 “2D”场景包含4个圆形对象和一个正交摄影机。用户可以移动这些圆形对象,因此使用正交摄影机,否则圆形对象可以“深度”(沿z轴)移动,并且可能会改变大小,我希望它们保持大小。 根据圆形对象的位置,3D场景中立方体的角点应与圆形对象的位置对齐。并保持洞察力。 编辑: 我试图实现的是:基于房间的图像,用户使用这些圆形对象来定义房间的尺寸。根据这些尺寸标注,将定位一个隐藏立方体作为边界框。下一步是
我有一个3D环境,其中包含一个3D场景和一个“2D”场景。 3D场景包含一个立方体和一个透视摄影机。 “2D”场景包含4个圆形对象和一个正交摄影机。用户可以移动这些圆形对象,因此使用正交摄影机,否则圆形对象可以“深度”(沿z轴)移动,并且可能会改变大小,我希望它们保持大小。
根据圆形对象的位置,3D场景中立方体的角点应与圆形对象的位置对齐。并保持洞察力。
编辑:
我试图实现的是:基于房间的图像,用户使用这些圆形对象来定义房间的尺寸。根据这些尺寸标注,将定位一个隐藏立方体作为边界框。下一步是将3d对象添加到场景中,并保持房间的透视效果。
我试着在一张图片中解释这个场景:
问题
基本上我不知道从哪里开始。
由于使用正交摄影机,圆形对象处于“2D”环境中,因此我没有我认为需要的深度值。 我想我需要一些基于相机位置/设置的透视变换?可以生成各种各样的矩阵,但不知道如何实现它们。
我研究的资料来源
下面是类似的情况
由于我的声誉,无法发布更多链接
我希望有人能把这一点讲清楚,或者给我指出正确的方向计算真正的自由度,我会说你没有足够的数据。将3D场景的投影摄影机想象为实际的针孔摄影机。然后,摄像机在胶片、传感器或任何物体上产生的图像至少由9个参数描述:
- 3摄像机在空间中的位置参数
- 2个参数,用于摄像机的观察方向,以及
- 1参数围绕光轴旋转摄像头+传感器
- 1确定针孔到传感器距离的参数,以及
- 2.传感器在其平面内的平移参数
当然,如果没有更多的信息,这个系统就是不够规范。不难找到满足您要求的变换矩阵。实际上是放置在一个设置中,在该设置中,将使用三维变换矩阵对二维到二维地图进行建模。你可以做同样的事情,也可以用它来做。但是您的用户可能会感到沮丧,因为他们获得的转换可能会对平面外方向做完全错误的事情,并且没有旋钮将其调整到正确的行为。计算实际自由度,我认为您没有足够的数据。将3D场景的投影摄影机想象为实际的针孔摄影机。然后,摄像机在胶片、传感器或任何物体上产生的图像至少由9个参数描述:
- 3摄像机在空间中的位置参数
- 2个参数,用于摄像机的观察方向,以及
- 1参数围绕光轴旋转摄像头+传感器
- 1确定针孔到传感器距离的参数,以及
- 2.传感器在其平面内的平移参数