QtQuick中,所有的都是对象,对象分两类,空间对象和资源对象。
空间对象,是有坐标位置的,可以进行坐标变换,如平移,旋转,缩放等。
资源对象,是没有坐标位置的,仅仅是辅助空间对象的。
在2D中,所有空间对象都是Item及其派生类,也就是说,Item及其派生类都可以定义空间对象。所有2D空间对象也必须用Item或是其派生类来定义。
在3D中,所有空间对象都是Node及其派生类,也就是说,Node及其派生类都可以定义3D场景里的一个空间对象。所有3D空间对象也必须用Node或是其派生类来定义。
对于空间对象,子对象是以父对象的坐标系为参考点的,即子对象都是局部坐标系。比如,一个Node或是其派生类定义的空间对象整体(无论里面是否有嵌套对象)可以作为一个整体进行空间变换。但资源对象,其父子关系仅仅是一个所有者关系,别无其它含义。它们不参与空间变换。
在3D中,3D场景必须通过视口才能渲染到2D屏幕上,这个视口就是View3D类来定义的。所以,要显示3D模型,只有两个方法来实现。第一个方法是在View3D中定义3D模型,第二个方法是在View3D外定义3D模型,然后通过View3D的importScene属性引入View3D。两种方式也可以同时进行。
View3D的外围,也就是其父节点,可以是Window类或者Item及其派生的空间对象类。比如,可以设置Window-Retangle-View3D即在2D的矩形类里定义视口,这是完全可以的。也可以设置Window-View3D,并让视口填充满整个窗口客户区,这也是可以的。