① 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.點擊文件-導出。畢蠢銀