关于3d层和2d层的划分问题

自己用cocos studio 做了一个2d的MainScene.csb场景,作为3d模型的显示背景
Node* node = CSLoader::createNode(“MainScene.csb”);

但是,这个node添加3d模型,始终sprite3d在下面。
node->addChild(sprite3d);
this->addChild(node);

本人使用的cocos2d-x 3.5版本

谁能告知一下原因。默认摄像机是默认csb加载的2d UI层在最上面的嘛。

本人找到的解决方案如下:
1.把Node添加到一个空sprite3d里面,就可以按正常的分层来做
2.再加一个相机

具体的cocos2d 里面对于3d和2d的分层 有没有一个具体的说明

如果自己创建了相机,设置相机camera->setDepth(1)
否则可以尝试修改2d背景GlobalZOrder小于0

没有创建相机,你说的也是个法子。只是觉得很混乱,就是想知道默认相机对于2d层,3d层的层级是怎么区分的

默认是2D的,scene类里面可以看到创建了一个默认Camera作为DefaultCamera。
最后用户看到的场景是多个camera看到的东西叠加起来的,相机顺序按CameraFlag区分(看下setCameraFlag就明白了,最多支持8个),新创建的对象,默认当然是被default camera看到了,setCameraMask属性决定了物体被哪个相机看到。

一个2d的对象加载3d对象下面,不会改变camera mask的,不需要考虑挂载关系。

但我有时候习惯用Layer做分界(因为很少碰到2d、3d混在一起的),最上层自然是UI,2d正交投影;然后是3d相机,透视投影;最后面是背景,2d正交投影(default camera)。

非常感谢,完美解决问题