cocos creator 1.9.3怎么设置camera实现3d透视投影效果

有没有像cocos2dx camera一样的接口,能创建透视相机,能设置cameraflag?以下是原本cocos2dx-lua的效果,creator貌似没有办法做到?

具体的需求是要像cocos2dx那样,针对不同的节点使用不同类型(正交或投影)的相机来渲染。像下面这样

看了下源码,cocos2dx中一个场景可以放多个camera,并且还能设置哪个节点由哪个camera渲染,这个需求好像用cocos creator做不了,无解。。。

把creator升级到2.0.1后,场景里可以放多个相机了,不过好像还是不能设置相机实现3d透视投影效果? 理论上我应该设置相机类型为透视投影,然后设置相机3d位置,设置lookat坐标。但是,没有办法设置3d位置。求解。

有办法实现类似效果吗,我真正要实现的是近大远小的效果

@jare @panda @nantas

求引擎开发组指导一下

或者我可以把cocos2dx里这几个方法导出到js层?

:joy:

求顶啊

好像做不了cocos2dx中的效果,对某一个节点应用透视投影相机

:joy: @jare @panda 求解答

好像没人看到?

@Knox @youyou

https://blog.csdn.net/auccy/article/details/80670947 可以实现这种效果吗

估计没戏 Cocoscreator和2d-x的3D方面完全是两种东西 creator没有移植2d-x的3D

是的啊,好麻烦。我就是想做个近大远小效果而已。creator使用的2dx引擎移除了3d模块,js engine又没实现3d这块,所以都不确实能不能做这种效果

2.0里面好像也没办法实现这种效果

我的天,一直没人回复。我的项目被卡在这里了

应该可以做,只不过需要改一些东西。
CCNode里有两个函数
_updateLocalMatrix
_updateWorldMatrix
这俩就是关于物体在世界控件位置的Local是自身坐标系的transform情况 word就是在世界控件中的情况了
但是要命的是这俩的变换都是基于affine-transform的也就是 只控制了6个元素 a b c d tx ty 同时,这套东西也是标准的额2d变换的东西 所以做不了3d变换

但是 Node的属性 _matrix _worldMatrix 都是 mat4类型的 也就是说完全可以做3d变换
那么就需要自己提供一个一个变换矩阵
因为我看看代码里Camera的创建是perspective的

可能是要把cc.node里的_updateWorldMatrix方法矩阵计算改成3d的

感觉上是的,或者说可以自己计算一个 然后hack了原来的矩阵 把它变成一个 3D的 不用那个仿射的来做,这块我不是很熟悉。


可以看到Draw的时候 设置了uniform的model矩阵,然后这个矩阵就是node.getWorldMatrix来获得的。
顶点通过 * 这个model矩阵就可以做到变换到世界空间

_transparentStage 这个函数在之前一步已经把view矩阵和proj矩阵都设置了,这样数据很自然的可以通过 PVM 这样的乘 之后到到了我们能看到的裁剪空间了,理论上这套应该没问题。

但是目前都是做2d的变换,所以对于z都是没有设置的,你想做近大远小就需要z,这里的核心应该就是解决设置Node的z的问题了

https://github.com/cocos-creator/engine/issues/3248 看下@panda 给我的回复

根据panda大大的提示确实成功了,分享一哈


新建了MyCamera的组件继承Camera,修改了beforeDraw的方法,只修改了look的方向向量

下面是修改了向量的有一种结果可以看出有点意思了

加一下我qq 82331717,技术交流一下。佩服你也有蛮有钻研精神的