clq
浏览(366) -
2023-10-31 18:05:50 发表
编辑
关键字:
[坑][c3d/u3d]cocos 取得网格数据 这了是个常见的坑。 在增加碰撞体时需要先添加刚体。但对于网格类型的碰撞体来说,还要指定具体的网格(也就是模型的网格的实际形状) 它的坑在于,和常见物体用 getComponent(cc.Mesh); 这样的不同,实际上在目前的 cocos 版本中只能先取 cc.MeshRenderer 。所以有以下代码 //给一个模型添加网格碰撞 //静态物体的,例如石头,如果是飞机这样动态的不能用这个,不过差不多的,改一下就行 AddMeshCollider_andRigidBody(node:cc.Node):void { let rigidBody = node.addComponent(cc.RigidBody); //生成一个刚体 rigidBody.type = cc.ERigidBodyType.STATIC; //默认是动力学的,要改成静态的 //----- //https://zhuanlan.zhihu.com/p/385296910 //通过一个简单的脚本对所有的子物体先进行了网格数据的合并,然后点击保存数据将网格数据导出为obj // 源码已上传至商店。 // 链接:https://store.cocos.com/app/detail/3666 // 或者在商店直接搜:Mesh 导出 obj3D模型 //https://blog.csdn.net/carlos13207/article/details/123966172 //let mesh = stone1.getComponent(cc.Mesh); //stone1.getComponentsInChildren(cc.Mesh); let mesh = node.getComponent(cc.MeshRenderer).mesh; //这样才能取得网格 let meshCollider = node.addComponent(cc.MeshCollider); meshCollider.mesh = mesh; //一定要设置网格属性,否则是不起作用的 //其实和设计器中是一样的 //-------------------------------------------------------- }// 网格的本身数据还是很多的,除了形状外还包括了法线、贴图坐标等等。 let positions = mesh.readAttribute(0, gfx.AttributeName.ATTR_POSITION); let normals = mesh.readAttribute(0, gfx.AttributeName.ATTR_NORMAL); let uvs = mesh.readAttribute(0, gfx.AttributeName.ATTR_TEX_COORD); let indices = mesh.readIndices(0); 参考 https://blog.csdn.net/carlos13207/article/details/123966172
本帖子属于以下条目()
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.