liyihongcug 发表于 2020-3-17 09:44:04

模型加载之自动缩放 随机旋转 对齐法线 随机缩放

本帖最后由 liyihongcug 于 2020-3-17 20:01 编辑

//osg中光照只会对有法线的模型起作用,而模型经过缩放后法线是不会变得,
                //所以需要手动设置属性,让法线随着模型大小变化而变化。GL_NORMALIZE 或 GL_RESCALE_NORMAL
                model->getOrCreateStateSet()->setMode(GL_RESCALE_NORMAL, osg::StateAttribute::ON);


自动缩放 随机自己设置

模型驱动其他要点,显示模式,最大range 最小rangelOD缩放 paped
LOD算法步骤:
1.根据用户设定的距离模式(视点到包围球中心距离,在屏幕上占有的像素大小),计算一个距离;
2.判断_rangeList的尺寸与numChildren,如果小于孩子数量就让numChildren与_randgelist的数量相等
3.遍历numChildren,在范围内的就accep(nv),不accept(nv)的节点将不会被渲染遍历到就不会被渲染出来
pagedLOD继承了LOD其traveser比LOD复杂得多,先看看算法步骤:
1.如果遍历器类型是CULL_VISITOR,就把该遍历器上一帧遍历完成后的帧数记录下来(意思就是保存上一帧是第几帧)。
2.对于每一个孩子计算其距离(required_range),跟LOD的相同。
3.循环_rangeList(这个东西保存了所有孩子的范围),判断刚才计算到的required_range是否在某个个_rangeList里面,如果范围链的尺寸没有超过当前孩子的数量就accept(显示) 。4.加载之前消失的节点 blog.csdn.net/qq_16123279/article/details/82665053

liyihongcug 发表于 2020-3-18 11:19:37

本帖最后由 liyihongcug 于 2020-3-21 22:20 编辑

osg漫游器重新设计
相机平移前 后 左 右 升高 下降(视高)
相对于相机本身抬头低头(俯仰角) 左转 右转(方位角)   
相对于屏幕中心点的飞机 远离 (观察到俯仰角也在变化) 逆时针 顺时针  向上旋转 向下旋转

osgEarth加载模型后底部出现遮挡加上自动平面裁剪避免遮挡:osgearth关于近地面Camera远近裁剪面的设置
视点接近地面时,由于默认的近裁剪面near太大,导致看不见靠近摄像机的物体,这时需要重新调节near和far的值(或者near/far的比率),可以使用osgEarth::Util::AutoClipPlaneCullCallback(osgEarth::MapNode* mapNode)
例如:
osgViewer::Viewer viewer;
viewer.getCamera()->addCullCallback( new osgEarth::Util::AutoClipPlaneCullCallback(mapNode) );

liyihongcug 发表于 2020-3-31 13:21:26

osgEarth2.8添加模型
#include <osgEarthDrivers/model_simple/SimpleModelOptions>



SimpleModelOptions modelOptions;
modelOptions.url() = "cow.osg.(100,100,100).scale";
modelOptions.location() = osg::Vec3(116, 40, 100);//北京地区坐标
map->addModelLayer(new ModelLayer("model layer", modelOptions));

//视点定位北京地区
osgEarth::Viewpoint vp("", 116, 40, 0.0, -2.50, -90.0, 1.5e6);
(dynamic_cast<EarthManipulator*>(viewer.getCameraManipulator()))->setViewpoint(vp);





有时候模型没有纹理,需要.osgearth_shadergen插件

osg::Node* cessna = osgDB::readNodeFile("data/model/su33.ive.osgearth_shadergen.1.scale");

Vigos 发表于 2020-7-15 09:17:07

前辈,请教一下SimpleModel的形式加载模型和以ModelNode的形式加载有什么区别
页: [1]
查看完整版本: 模型加载之自动缩放 随机旋转 对齐法线 随机缩放