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

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

应该可以做,只不过需要改一些东西。
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,技术交流一下。佩服你也有蛮有钻研精神的

大兄弟能分享一下么 想学习一下3D方面的东西

额,老哥 我就是看了panda说的 也就是 caochao给的链接里 数 重写camera

感谢 @an540545947 , 终于尝试出效果了

有demo吗

是呢 传一个demo 工程 体验体验感觉

Mark

Mark

@panda 请问下,按重写beforeDraw方式实现透视后,点击屏幕点时怎么将触摸点转换成世界坐标呢?
我看了一下引擎有一个Camera.prototype.screenToWorld接口,但不知道怎么使用。

你需要参考下cocos2dx projectGL 和 unProjectGL

做3d麻将效果吗?

可以考虑用矩阵变换自己做一下,这样做,可以做出一种3D视角。

1.10版本 cocos creator能用不

3.7.4的引擎版本,想实现这个效果,需要怎么做?