Cesium-Examples/examples/cesiumEx/ammolibs/meshVisualizer/README.md
2025-03-11 17:51:04 +08:00

16 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#Cesium 功能扩展插件
说明: 对Threejs 和 于ammo.js物理引擎相关整合
github地址https://github.com/MikesWei/CesiumMeshVisualizer
主要功能:
1、不直接支持threejs的mesh但是支持Threejs的Geometry和BufferGeometry来构建几何体。内置了Threejs Geometry、BufferGeometry到Cesium.Geometry的转换接口同时提供Cesium.Geometry到Threejs BufferGeometry的转换接口。这些接口由GeometryUtils类提供。
2、定义Mesh支持Cesium.Geometry、THREE.Geometry、THREE.BufferGeometry以及CSG运算结果模型。
3、更方便的动态渲染和管理。同一个mesh可以单独修改mesh的位置(position)、缩放(scale)、旋转角度(rotation/Quaternion)等属性;也可以单独修改 geometry和material同一个geometry可以单独修改各个属性和索引。方便管理且减少对象的局部变化带来的整个drawCommand重新构建次数以期在更多动态渲染 对象同时改变的情况下(比如结合物理引擎做模拟),仍然保持较高的帧率,当然也牺牲了一定的内存。
4、定义MeshMaterial目的是更方便的引用Threejs圈的那些炫酷特效Shader减少整合所需的代码量。尤其是Cesium的Appearance从fragmentShader中分离出Material部分的Shader并且作用域不一样之后带来好多不便引入网上那些炫酷特效Shader的时候真是头疼死了谁做过谁才解其中味~ MeshMaterial区别于Cesium的Material更像Threejs的Material,但不完全是。。。好像有点四不像~
5、定义FramebufferTexture启发于Threejs的RenderTarget暂且叫帧缓存纹理类吧反正名字不重要~ MeshVisualizer和MeshMaterial一起支持此类纹 理就当是普通的一张图片纹理就好了。它的用处就是把Mesh渲染到帧缓存中作为纹理参与其他Mesh的渲染。可以参考VolumeRendering示例。另外RendererUtils 提供了一个单次执行渲染到纹理的接口RendererUtils.renderToTexture。在不使用MeshVisualizer的时候也就是自己基于drawCommand自定义一个Primitive的时 候也可以用得上。
6、整合CSG.js支持使用Cesium.Geometry、THREE.Geometry、THREE.BufferGeometry做交、并、补等运算并提供将运算结果CSG对象转成Cesium.Geometry、THREE.Geometry的接口。参考CSG示例。
7、提供基于ammo.js物理引擎的示例示例源码源于Threejs使用MeshVisualizer可以在更少的代码修改情况下完成迁移整合甚合我意。