① OSG仿真案例(8)——读取FBX格式文件并显示(无动画)
包含的头
所需要的类(结构体)
加载吧缓搜显示模型
文件液芹夹中闹哪毕数据
② 想请问下高手们,用3ds Max制作模型导出*.3ds格式,然后利用OSG加载模型,如何让模型上面有纹理呢
3ds格式 不支持 贴图文件名超过8个字符的。。
超过8个的会被截掉 只保留8位 所以osg 不认
③ 有懂OSG的吗帮忙看看……
你检查闹尺下以下三腔雹条:
1、使用#include <osgDB/ReadFile>了吗液圆高?
2、确定你的path环境变量里面包含C:\OSG\OpenSceneGraph\build\bin路径
3、工程属性的附加依赖项中有osgDBd.lib
尝试一下。
④ 我手上有osgb格式的倾斜摄影文件,如何打开进行浏览
1、首先打开LocaSpace Viewer软件,进入到应用程序的首页中。
⑤ 小白请教osg(OpenSceneGraph)如何安装
一下载资料:
1、下载源码:
在http://www.openscenegraph.org/projects/osg/wiki/Downloads下载稳定版本的源代码或预编译包。
source code为源代码,可以用CMAKE工具生成.sln的解决方案;
binaries为预编译包,预编译包不是openscenegraph官方直接维护,而是有其他爱好者上传,可能会有隐患,最好是从源代码进行编译。
版本说明:<主版本号>.<副版本号>.<修订号>
主版本号高的,功能丰富;副版本号为偶数的为正式版本,比较稳定;副版本号为奇数的为开发者版本,有新特性和功能,但会存在未解决的兼容性和效率问题;开发者版本和正式版本是同步发行的。
下载文件为:OpenSceneGraph-2.8.0.zip
2、下载Cmake工具:
在http://www.cmake.org/cmake/resources/software.html中下载CMake工具cmake-2.8.2-win32-x86.exe。
3、下载SVN软件(用于下载源码或第三方库,有的版本不需要此软件,可直接下,根据情况定):
在http://tortoisesvn.tigris.org/下载TortoiseSVN。
4、下载第三方库Dependencies,http://www.openscenegraph.org/projects/osg/wiki/Downloads/Dependencies,
“VisualStudio 8 (2005) SP1 - svn access directory ”
5、下载示例:
在http://www.openscenegraph.org/projects/osg/wiki/Downloads/SampleDatasets中下载示例数据文件OpenSceneGraph-Data-2.8.0.zip 。
二、安装
1、安装cmake工具
2、在某盘符下建立osg文件夹,在该文件夹中放置源码文件、第三方文件和示例文件。
3、运行cmake,
第一行(where is the source code)输入osg文件夹中的源码文件;
第二行(where to build the binaries)输入一个新文件夹名及地址,如osg/build_osg;
点configure,选择所用的编译器版本,即c++版本;
点grouped,选择build项,选择build_osg_examples和build_osg_wrappers;
选择cmake项,设置cmake_install_prefix的位置(用于存放编译完的各种模块文件,如库文件、可执行文件和头文件)
点configure,点advanced,选上build_mfc_example
点configure,
点generate,完成。
此时在osg/build_osg文件中生成了对应编译版本的.sln文件。
4、用c++编译器打开该.sln文件,在解决方案管理器窗口中的all_build上右击,选“生成”,将在osg/build_osg中生成几个G的文件。
在install上右击,选“生成”,将在第三步中cmake_install_prefix设置的文件夹中生成编译完的各种模块文件(如库文件、可执行文件和头文件)。
三、设置环境变量
我的电脑-属性-高级-环境变量
系统变量
OPENSCENEGRAPH_VERSION=2.8.0
OSGDIR=D:\Program Files\OpenSceneGraph
PATH新增:%OSGDIR%\bin;
%OSGDIR%\bin\osgPlugins-%OPENSCENEGRAPH_VERSION%
OSG_FILE_PATH=%OSGDIR%\data
OSG_NOTIFY_LEVEL=INFO
四、简单测试
在控制台下输入osgviewerd cow.osg
五、建立工程环境
1、使VS支持无扩展名头文件的高亮显示。
进入visual studio,选择Tools-Options,选text editor-file extension,在下面的map extensionless files to选项选择microsoft visual c++。
2、构建基于OSG开发的工程。
1)建一个工程
2)在project-properties中选择configuration properties-c/c++,在additional include directories中输入“$(OSGDIR)\include”。
3)选择configuration properties-linker,在additional library directories中输入“$(OSGDIR)\lib”。
4)选择configuration properties-linker-input,打开additional dependencies窗口,准备配置输入的依赖库文件名称。如OpenThreadsd.lib;osgd.lib;osgDBd.lib;osgUtild.lib;osgGAd.lib;osgTextd.lib;osgViewerd.lib
注意:Debug版本的工程和Release版本的工程所依赖的OSG库文件类型相同,但名称有区别.Debug版本的文件名末尾有"d"标识。根据用户需要的不同,还可以添加其他库依赖文件,这些文件在osg的lib文件夹中。
OK,现在可以编代码,编译、调试,输出效果了,体会OSG渲染引擎的强大吧
⑥ 如何在Web上直接浏览大规模OSGB格式倾斜模型(二):转换OSGB
欢迎关注公号【 三维网格3D 】,第一时间获取最新文章
上一篇( 如何在Web上直接浏览大规模OSGB格式倾斜模型(一):解析OSGB )已经贴出了解析结果,让我们对OSGB倾斜模型文件内部结构有了比较清晰的认识,本篇我们将解析结果转成three.js对象,并实现单个模型的显示。
为什么转成three.js对象
从解析结果看,Osg对象的节点关系用three.js对象表达更容易,转换结果可以直接用three.js显示,通过我们团队的Cesium和three.js融合方案,可以轻松将成果用于Cesium开发的项目,既可以单独使用,又可以拥有GIS能力。
需要转换的Osg类型
解析得到的Osg对象,Type属性指示对象的类型,我们只是要转换倾斜摄影模型文件的Osg对象,而不是做一个通用的转换工具,所以先将类型做一下分类,只转换目前所用测试数据(100多G的测试数据)已知的类型。
PS:我们团队内部使用的版本,经过一年多的应用和改进,支持了更多类型的转换,填了许多坑,而且支持osgb、osgt、osg、osgjs四种格式文件,加载速度和健壮性都得到保障。欢迎咨询~
节点类
osg::Node
osg::Geode
osg::Group
osg::LOD
osg::PagedLOD
osg::MatrixTransform
几何类
osg::Geometry
osg::OsgArray
材质类
osg::StateSet
osg::Material
osg::StateAttribute
osg::Texture
osg::Texture2D
osg::Image
节点类主要考虑osg::MatrixTransform,因为这个节点主要的信息就是变换参数,会影响模型的位置、旋转、缩放等。
接下来我们着重介绍转换几何和材质这两类,LOD和PagedLOD参数不多,而且都是调度相关的,我们放在下一篇一起介绍。
转换几何对象
几何数据存储在Osg::Geometry,包含索引属性PrimitiveSetList、位置坐标属性VertexArray、纹理坐标属性TexCoordArray。我们将其转换为THREE.BufferGeometry。
varbufferGeometry=newTHREE.BufferGeometry();
顶点属性转换
顶点属性值是一个二维数组,我们直接调用flat方法,转为一维数组即可。
varpositions=newFloat32Array(osgGeometry.VertexArray.flat());
varuvs=newFloat32Array(osgGeometry.TexCoordArray.flat());
bufferGeometry.setAttribute('position',newTHREE.BufferAttribute(positions,3));
bufferGeometry.setAttribute('uv',newTHREE.BufferAttribute(uvs,2));
索引转换
索引类型有两种,有value指定,这里我们只对索引类型为4的情况(即绘图最小单元为四边形)进行特殊处理,其余的默认最小绘制单元为三角形。
varprimitiveSet=osgGeometry.PrimitiveSetList[0]
varindices=primitiveSet.data;
if(primitiveSet.value==4) {
letnewIndices=[];
for(leti=0; i<indices.length; i+=4) {
leti0=indices[i],
i1=indices[i+1],
i2=indices[i+2],
i3=indices[i+3];
newIndices.push(
i0, i1, i3,
i1, i2, i3
);
}
indices=newIndices;
}
bufferGeometry.setIndex(indices);
转换材质对象
倾斜摄影模型的材质最重要的就是贴图,作为原理介绍,我们不处理其他材质参数,直取贴图即可,当然工程应用上我们还是需要处理一些情况,保证其可用、可靠、健壮。
材质对象存储在Osg::Geometry的StateSet属性,该属性类型为Osg::StateSet,而我们要的贴图存储在Osg::StateSet的TextureAttributeList属性,一般就一张图。
倾斜模型已经包含了光影信息,为此我们将材质转为THREE.MeshBasicMaterial。
varmaterial=newTHREE.MeshBasicMaterial({
side:THREE.DoubleSide
});
处理贴图
贴图一般是jpg或者png格式,我们这里只处理这两种格式。需要注意的是图片数据为Uint8Array类型,我们需要先转为Blob,然后通过URL.createObjectURL创建url,最后使用THREE.TextureLoader加载。
varosgStateSet=osgGeometry.StateSet;
varosgImage=osgStateSet.TextureAttributeList[0].value.StateAttribute.Image
varfileName=osgImage.Name;
constisJPEG=fileName.search(/\.jpe?g($|\?)/i)>0
constisPNG=fileName.search(/\.png($|\?)/i)>0
if(!isPNG&&!isJPEG)return;
varmimeType=isPNG?'image/png':'image/jpeg';
varimageUri=newBlob([osgImage.Data], { type:mimeType });
imageUri=URL.createObjectURL(imageUri)
vartexture=newTHREE.TextureLoader().load(imageUri, ()=>{
texture.needsUpdate=true
})
创建网格
最后,使用转换好的几何体和材质创建模型网格。这里要注意,倾斜摄影模型是z轴朝上(z-up),而three.js渲染是y轴朝上(y-up),所以还需将网格绕x轴旋转y-90°才得到正常的渲染效果。
varmesh=newTHREE.Mesh(geometry, material);
mesh.rotation.x=-Math.PI/2
转换结果
显示效果
额,看起来并没有那么好看~毕竟这是单个瓦片最不清晰的那层,简化到不能看了。
下一篇,我们将主要介绍如果实现PagedLOD,来加载大规模倾斜摄影模型,敬请期待
欢迎关注公号【 三维网格3D 】,第一时间获取最新文章
⑦ 倾斜摄影文件osgb格式,如何转换为obj 或者3ds 或者其它3d模型常见的格式
osgb格式是无人机飞行获取的数据,可以直接使用Smart3D打开,也可以用SuperMap桌面版,或者在自己电脑上配置好osg环境后,用命令osgviewer 文件名打开。
⑧ 三维图格式有哪些 ,具体什么格式是通用的
三维图格式很多。
如:Xdaeobj3dsmaxmambc4dmd2fbx
wxwrlstlstp3mfslprtdwgosgiges一些机构还会定义自己的模型格式。
通用的格式:
DCC软件:3dsmaxMayaBlenderCinema4DMonoBrush。
CADCAM软件:UGPro/。
1、数字模型应用的两大主要领域:
总的来说分为两大领域:DCC(Digital Content Creation)领域和CAD/CAM(Computer Aided Design/Manufacturing)领域。前者主要偏向可视化,应用于游戏、影视动画、当前的VR和AR;后者主要面向工业设计制造。
2、两大领域模型的特点:
DCC软件多以mesh/polygon形式制作模型,通过对顶点、线段、面片网格进行模型的编辑。CAD/CAM软件多以nurbs曲面形式制作模型,通过对样条线的编辑生成曲面模型。
两种模型的区别有点像“像素”图像和“矢量”图像的区别。前者长于制作形状怪异细节复杂的有机模型,如怪兽,山洞;后者长于制作表面光滑的机械模型,如汽车外壳。
⑨ 怎么把3dmax 文件转换成可以在osg里执行的文件
1.点击文件-导出。毕蠢银