現在很多三維項目中,不僅僅要用到三維地形,正射影像和矢量數據,還會融合到各種三維模型,包括傳統的3DMax手工建模,BIM,傾斜攝影自動建模,激光點雲模型,三維地質體模型等等。
三維平台首先要做的是把這些多源數據承載進來,並且要能夠流暢,穩定地運行使用。
接下來就是各種展示,應用,分析。
三維剖切,就是一種較好的展示復雜結構模型的方法,比如應用於BIM,室內精細建模,三維地質體模型等。

SkylineGlobe提供的核心示例代碼如下:
//------------------- function showCrossSection(gBoxObj) { try { var SGWorld = CreateSGObj(); var vertices = []; var sectionSize = gBoxObj.Width * 5; gLastPos = gBoxObj.Position.Copy(); var pos = gBoxObj.Position; var planeTolarance = 100 / 100; if (gBoxObj.Position.Pitch == 90) { var yaw = gBoxObj.Position.Yaw - 180; pos = pos.Move(planeTolarance, yaw - 180, 0); // make sure the cut area doesn't include the box pos = pos.Move(gBoxObj.Width / 2, 0, -90); pos = pos.Move(gBoxObj.Width / 2, yaw + 90, 0); vertices[0] = pos; pos = pos.Move(sectionSize, yaw - 180, 0); vertices[1] = pos; pos = pos.Move(gBoxObj.Width, yaw - 90, 0); vertices[2] = pos; pos = pos.Move(sectionSize, yaw, 0); vertices[3] = pos; vertices[4] = vertices[0].Move(gBoxObj.Width, 0, 90); vertices[5] = vertices[1].Move(gBoxObj.Width, 0, 90); vertices[6] = vertices[2].Move(gBoxObj.Width, 0, 90); vertices[7] = vertices[3].Move(gBoxObj.Width, 0, 90); } else { pos = pos.Move(planeTolarance, 0, 90); // make sure the cut area doesn't include the box pos = pos.Move(gBoxObj.Width / 2, gBoxObj.Position.Yaw, 0); pos = pos.Move(gBoxObj.Width / 2, gBoxObj.Position.Yaw + 90, 0); vertices[0] = pos; pos = pos.Move(gBoxObj.Width, gBoxObj.Position.Yaw - 180, 0); vertices[1] = pos; pos = pos.Move(gBoxObj.Width, gBoxObj.Position.Yaw - 90, 0); vertices[2] = pos; pos = pos.Move(gBoxObj.Width, gBoxObj.Position.Yaw, 0); vertices[3] = pos; vertices[4] = vertices[0].Move(sectionSize, 0, 90); vertices[5] = vertices[1].Move(sectionSize, 0, 90); vertices[6] = vertices[2].Move(sectionSize, 0, 90); vertices[7] = vertices[3].Move(sectionSize, 0, 90); } gGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry(vertices); SGWorld.Analysis.ShowCrossSectionBox(gGeometry, false, 0xffffffff); } catch (err) {} } function HideCrossSectionBox() { if (syBoxobj != null) { var sg = CreateSGObj(); sg.Analysis.HideCrossSectionBox(); sg.Creator.DeleteObject(syBoxobj.ID); syBoxobj = null; } }
完整的功能實現代碼在C:\Program Files\Skyline\TerraExplorer Pro\Tools\CrossSection這個目錄里。
