快速建站实例演示完整版,汕头市住房和城乡建设局网站,wordpress 最好的seo,公司网站建设考核需求类似奇瑞的这个效果#xff0c;就是能全方位旋转拖拽看车#xff0c;以及点击开关车门车窗后备箱等 瑞虎9全景看车 (chery.cn) 最开始收到这个需求的时候还有点无所适从#xff0c;因为以前没有做过类似的效果#xff0c;后面一经搜索后发现实现的方式五花八门#xf… 需求类似奇瑞的这个效果就是能全方位旋转拖拽看车以及点击开关车门车窗后备箱等 瑞虎9全景看车 (chery.cn) 最开始收到这个需求的时候还有点无所适从因为以前没有做过类似的效果后面一经搜索后发现实现的方式五花八门但始终绕不过opengl于是通过opengl 逐步展开… 1、推荐一个学习OpenglGL 基础操作的文章
OpenGL ES_york2017的博客-CSDN博客 里面有一些基本的操作和概念可以作为像我这样完全没有接触过opengl 的小白入手一套文章看下来也熟悉了一些基本的接口比如添加一个灯光、网格线、obj模型、awd模型等在后面的库中能用得着 2.1、OpenGL ES 封装库 – Rajawali
Rajawali-github
由于我是一个纯Java er对c不熟悉所以试了一下这个纯Java语言的封装库从他的demo例子来看是可以实现我的需求的但是当我仔细看代码的时候发现加载骨骼动画的方式只能通过加载 .md5mesh 和 .fbx 文件但是我搜索良久也没有找到 .md5mesh 文件后缀的免费的车辆模型(当然要白嫖拉)于是尝试使用 .fbx的方式但是demo里面并没有做这种方式的例子于是我自己写了一个然后就 报错了在库github的issue里面也找到了一些类似的提问但是并没有解决似乎是说不支持这种方式索性开发人员就直接抛出了一个异常 FBX Loader Issue · Issue #2303 如果有大佬找到了用rajawali加载fbx文件的告诉我一声感谢~
进入正题
Rajawali的 github 下载下来可以直接运行如果问题的话可以留言一起沟通下运行出来如图所示 2.2 加载obj模型
先看效果
这里只给出主要的initScene的代码完整代码可以在 这里查看 注释和需要注意的点都在代码里面有所体现这里就不细说了
protected void initScene() {try {PointLight light new PointLight();light.setPosition(0, 10, 4);light.setPower(3);getCurrentScene().addLight(light);DirectionalLight directionalLight new DirectionalLight();directionalLight.setLookAt(0, 5, 10);directionalLight.setPower(3);getCurrentScene().addLight(directionalLight);//加载obj文件需要注意的点//一、加载obj文件的时候如果有纹理文件.mtl mtl文件里面的png 图片需要放在drawable 里面才能被识别到如果放到mipmap的话是识别不到的。//二、mtl文件的命名格式为xxx_mtl是没有后缀的而在.obj文件里面引用mtl文件的时候则是需要 xxx.mtlLoaderOBJ loaderOBJ new LoaderOBJ(getResources(), mTextureManager, R.raw.freigther_bi_export_obj);//multiobjects_objloaderOBJ.parse();Object3D object3D loaderOBJ.getParsedObject();getCurrentScene().addChild(object3D);object3D.setScale(0.5);//设置拖拽功能ArcballCamera arcballCamera new ArcballCamera(getContext(), getActivity().findViewById(R.id.fl_empty));//设置相机的位置arcballCamera.setPosition(1, 7, 10);//替换当前场景下的相机第一个参数的旧的相机第二个是新的getCurrentScene().replaceAndSwitchCamera(getCurrentCamera(), arcballCamera);//车辆自旋转Animation3D animation3D new RotateOnAxisAnimation(Vector3.Axis.Y, 360);//一圈时间animation3D.setDurationMilliseconds(8000);/* 设置旋转重复类型NONE无转一圈后会停止INFINITE一直旋转RESTART转一圈后停止REVERSE转一圈后停止REVERSE_INFINITE顺时针一圈逆时针一圈如此循环*/animation3D.setRepeatMode(Animation.RepeatMode.INFINITE);animation3D.setTransformable3D(object3D);getCurrentScene().registerAnimation(animation3D);
// animation3D.play();} catch (Exception e) {e.printStackTrace();}}2.3 加载fbx模型
前面说过这个加载不了3d模型似乎是由于框架的限制问题所以也不细说了
3 libGdx 加载3d模型
LibGDX-github 也是一个高star的3d引擎框架但是苦于没有中文文档让我很难受相关3d资料较少看了基于libgdx的一些例子似乎都是2d的产品较多其中一个例子运行出来是这样的不太满足我的需求也没找到合适的3d的例子找到的小伙伴给我说一下感谢~
总结 目前没有实现加载带有骨骼动画的3D车辆模型这个功能如果有大佬有做过类似需求的请留言沟通不胜感激。