LOD-层次模型


LOD

LOD是Levels of Detail的简称,是多细节层次的展示方法。LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。

官方的例子在 /examples/lod ,配置本机环境,请参考OSGJS官方例子使用说明-本机部署,核心代码如下:

function createScene() {
    var lodNode = new osg.Lod();
    P.resolve( osgDB.parseSceneGraph( window.getModelB() ) ).then( function ( o ) {
        lodNode.addChild( o, 0, 50 );
    } );

    P.resolve( osgDB.parseSceneGraph( window.getModel() ) ).then( function ( data ) {
        lodNode.addChild( data, 50, Infinity );
    } );
    return lodNode;
}

html页面中
<script type="text/javascript" src="mickey.osgjs"></script>
<script type="text/javascript" src="monkey.osgjs"></script>
  • window.getModelB()这个函数在 monkey.osgjs 中,window.getModel() 在 mickey.osgjs中,二者返回的都是模型的 json 字符串

  • 读取模型使用的 osgDB.parseSceneGraph() 函数,还有另外一个函数osgDB.readNodeURl()也可以

  • lodNode.addChild( data, 50, Infinity)(function ( node, min, max ))三个参数分别代表 节点,显示距离的最小,最大值

  • 这里的 P 是 Promise对象,参考阮大神的作品