天天看点

Collada 模型解析及3D显示

    COLLADA的全名「COLLAborativeDesign Activity」起源于sony(Sony Computer Entertainment),现由Khronos Group维护管理.,此机构成立于2000年,由包括Intel、SUN、ATI、英伟达、SGI(美国硅图)等多家国际知名公司领导者创立;致力于发展开放标准的应用程序接口 API ,以实现在多种平台和终端设备上的富媒体创作、加速和回放。可以这么说,凡是前面带open的都有它主持和参与,如openCL(Open Computing Language),openWF,openML,openGL等。当然COLLADA也是一个开放的标准,最初用于3D软件数据交换,现在则被许多著名厂家支持如Autodesk、XSI(同maya一个级别的图形渲染引擎,《侏罗纪公园》)和google 旗下的google earth等。COLLADA不仅仅可以用于建模工具之间交换数据之用,也可以作为场景描述语言用于小规模的实时渲染。因为COLLADA DOM拥有丰富的内容用于表现场景中的各种元素,从多边形几何体到摄像机无所不包。(exchangingdigital assets among various graphicssoftware applications that might otherwisestore their assets in incompatible file formats. COLLADA documents thatdescribe digital assets are XML files, usually identified with a .dae (digital assetexchange)filename extension.)

看到XML我就想到“二叉搜索树”,因为它的数据文档是树状的,可以进行定位搜索等操作。它的英文名extensible markup language ,中文名是可扩展标记语言,首先它是一门语言,其次它擅长存储数据,所以在数据交换中有很大应用。

XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。而HTML是用来定义数据的,重在数据的显示模式。TinyXML是其中一个读取xml文档的库,网上有很多相关的编译配置资料。

 支持的游戏引擎

  • Ardor3D
  • C4 Engine
  • CryEngine 2
  • GLGE
  • Irrlicht Engine
  • ShiVa
  • Torque 3D
  • Unity
  • Unreal engine
  • Spring (game engine)

支持COLLADA的3D游戏和应用(亮点google earth):

  • ArcGIS
  • TNTmips
  • Google Earth - (release 4) has adopted COLLADA (1.4) as its native format for describing the objects populating the earth. Users can simply drag and drop a COLLADA (.dae) file on top of the virtual Earth.
  • Google SketchUp Pro (or any version of SketchUp starting with 8.0) can also be used to create .KMZ files: a zip file containing aKML file, a COLLADA (.dae) file, and all the texture images.
  • Mac OS X 10.6's Preview allows opening collada files for viewing in 3D.
  • OpenSimulator
  • Second Life

读写 COLLADA文件的库(当然也可以自己利用上面提到的tinyXML或其他工具解析加载)python亮了:

  • COLLADA DOM (C++) - The COLLADA DOM is generated at compile-time from the COLLADA schema. It provides a low-level interface that eliminates the need for hand-written parsing routines, but is limited to reading and writing only one version of COLLADA, making it difficult to upgrade as new versions are released.
  • OpenCOLLADA (C++) - The OpenCOLLADA project provides the next generation plugins for3ds Max & Maya and the sources of utility libraries which were developed for the plugins.
  • FCollada (C++) - A utility library available fromFeeling Software. In contrast to the COLLADA DOM, Feeling Software's FCollada provides a higher-level interface. FCollada is used inColladaMaya, ColladaMax, and several commercial game engines. The development of the open source part was discontinued by Feeling Software in 2008. The company continues to support its paying customers and licenses improved versions of its software.
  • pycollada (python) - A python module for creating, editing and loading COLLADA. The library allows the application to load a COLLADA file and interact with it as a python object. In addition, it supports creating a collada python object from scratch, as well as in-place editing.

题目中显示,由于时间的关系,下次补充上。