Assimp场景模型输出Collada,STL,3DPDF
本文介绍开源库模型的几种输出格式:DAE,STL,3DPDF。

Assimp是C++写的,AssimpNet是C#重构其中主要数据结构,并开通Assimp中重要方法的调用接口,为不熟悉C++的码农带来了便利。
Assimp一个重要的结构就是Scene,无论是导入的模型,还是自己创建填充Scene结构的模型,都面向Scene操作。
虽然Assimp提供了几种输出格式的方法,但是对于可扩展的程序要求,必要的重写是要考虑的。
3DPDF:
Adobe Reader8+以上开始支持3D模型的写入,貌似只支持U3D格式和PRC 格式。U3D是二进制文件,就如ShapeFile也是二进制文件一样,白皮书给了你格式说明,但是没有告诉你这些是如何组织的,数据存储于数据组织不一致。
天无绝人之路,国外牛人已经发现并解决了这个问题,从Scene输出到PDF的思路就是,将模型输出到IDTF文件,再将IDTF文件转换成U3D文件,U3D写入PDF很容易。以此类推,任何模型的输出PDF都可以实现。
IDTF文件是文本读写的,可以根据Scene和格式白皮书写,但是IDTFScene正如Scene一样,组织结构完善,提供了读写IDTF的便利。
IDTF转换成U3D使用的是IDTFConverter.exe,这个可以单独下载下来,不需要安装什么软件,在转换的同时,注意要把纹理转换成TGA格式。
根据ITextSharp提供的示例,可以把U3D写入PDF,这个PDF只有Adobe Reader8+才能浏览,其他阅读器貌似不行哦。
Collada
Collada文件格式非常易读,因为他是基于XML的,就像GML和CityGML。读写Collada就是对XML文件的读写,同样,国外牛人已经提供了这个文件读写的便利方法,http://code4k.blogspot.com/2010/08/import-and-export-3d-collada-files-with.html,需要FQ才能看到。
STL
与其他格式不同,Stl是3D打印机支持的格式,将为模型的3D打印提供可能。
Stl的输出也是极其简单,网上可以找到写的方法,不赘述。
这三种格式各有千秋:
3DPDF,输出只读模型到PDF,不需要安装模型浏览器,便于携带和查看。
Collada,非常通用的三维模型格式,涵盖模型的各方面信息。
STL,也是通用的三维模型格式,与Collada不同的是不支持纹理,3D打印机格式。
Assimp场景模型输出Collada,STL,3DPDF的更多相关文章
- cesium 学习(五) 加载场景模型
cesium 学习(五) 加载场景模型 一.前言 现在开始实际的看看效果,目前我所接触到基本上都是使用Cesium加载模型这个内容,以及在模型上进行操作.So,现在进行一些加载模型的学习,数据的话可以 ...
- iOS模型输出和打印
在调试时,我们经常用到输出model,查看数据是否正确,还会在控制台"po 模型"操作,一般输出都是这样的格式的: person is <Person: 0x60800003 ...
- 分类模型输出y值
y=w0+w1x1+w2x2+....+wnxn coef_:存储w1,w2,...wn. intercept_:存储w0 dual_coef_*support_vectors_=coef_ (1)S ...
- 【python2/3坑】从gensim的Word2Vec.load()的中文vector模型输出时显示unicode码
服务器上python2.7 打印出的e[0]对应的是 unicode码 于是分别尝试了用e[0].encode('utf-8')转码 和 e[0].decode('unicode-escape')依然 ...
- 如何把ANSYS模型输出为CDB文件并导入FLUENT 【转载】
转载自: http://linziok99.blog.163.com/blog/static/100157302009320134826/ 在main menu中选择Archive Model ,再点 ...
- Qt3D使用assimp加载常规模型文件
Qt3D使用assimp加载三维模型文件,assimp支持很多常规格式的三维模型格式: 其中支持导入的格式有: 3D 3DS 3MF AC AC3D ACC AMJ ASE ASK B3D BLEND ...
- 使用 Assimp 库加载 3D 模型
前言 要想让自己的 3D 之旅多一点乐趣,肯定得想办法找一些有意思一点的 3D 模型.3D 模型有各种各样的格式,obj的,stl的,fbx的等等不一而足.特别是 obj 格式的 3D 模型,完全是纯 ...
- 图示详解BERT模型的输入与输出
一.BERT整体结构 BERT主要用了Transformer的Encoder,而没有用其Decoder,我想是因为BERT是一个预训练模型,只要学到其中语义关系即可,不需要去解码完成具体的任务.整体架 ...
- DirectX11 With Windows SDK--19(Dev) 编译Assimp并加载模型、新的Effects框架
前言 注意:这一章进行了重写,对应教程Dev分支第19章的项目,在更新完后面的项目后会替换掉原来第19章的教程 在前面的章节中我们一直使用的是由代码生成的几何模型,但现在我们希望能够导入模型设计师生成 ...
随机推荐
- JQUERY1.9学习笔记 之基本过滤器(一) 动态选择器
动态选择器:animated Selector 描述:当选择器运行时,选择动态进程中的所有元素.(对动态进程起作用) jQuery( ":animated" ) 注释::anima ...
- ActiveRecord 模式杂谈
ActiveRecord也属于ORM(对象关系映射)层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记录映射到对象,字段映射到对象属性.配合遵循的命名和配置惯例,能够很大程度的快速实现模 ...
- JBPM4.4GPD设计器中文乱码问题的另一种解决方法
在eclipse中使用JBPM4.4的设计器时,输入中文后直接查看Source发现xml里中文全都乱码了,这时候大约整个人都不好了!赶紧百度.谷歌,搜到的多数结果都是要你在eclipse.ini或my ...
- 针对access数据库的增删改查
1.执行查询操作:(ExecuteReader方法) string myConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data ...
- 【C#】委托与事件
一.委托 1.概念:用来存放 方法 指针(地址)的容器. 为什么要有委托?当有的业务代码总体已经实现,但有部分需要调用者来决定,就可以使用委托的方式,让调用者把一段代码以 方法的方式 传入. [例子] ...
- 关于机器学习-EM算法新解
我希望自己能通俗地把它理解或者说明白,但是,EM这个问题感觉真的不太好用通俗的语言去说明白,因为它很简单,又很复杂.简单在于它的思想,简单在于其仅包含了两个步骤就能完成强大的功能,复杂在于它的数学推理 ...
- 深入理解querySelector(All)
querySelector和querySelectorAll同属于Selectors API Level 1规范,该规范早在2006年就已经开始发展,并在2007年10月形成querySe ...
- linux串口驱动分析——打开设备
串口驱动是由tty_driver架构实现的.一个应用程序中的函数要操作硬件,首先会经过tty,级级调用之后才会到达驱动之中.本文先介绍应用程序中打开设备的open函数的整个历程. 首先在串口初始化中会 ...
- HDU-1869六度分离
Problem Description 1967 年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为“小世界现象(small world phenomenon)”的著名假说,大意是说,任何2个素不 ...
- c语言学习笔记(1)——c语言的特点
一.c语言概述 1.为什么学习c语言? (1)c的起源和发展 第一代语言:机器语言 1101 第二代语言:汇编语言 add ax,bx; 第三代语言:高级语言 a+b; 结构化:c fortra ...