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章的教程 在前面的章节中我们一直使用的是由代码生成的几何模型,但现在我们希望能够导入模型设计师生成 ...
随机推荐
- thinkphp基础入门(2)
第一节介绍了thinkphp基本路径问题,第二节将介绍thinkphp的常见用法(M层跟V层) 我们先在Controller层新建个IndexController.class.php(新建文件的格式为 ...
- shell脚本实现覆盖写文件和追加写文件
1.覆盖写文件 ">" date > not_append_file.txt
- 《python基础教程》笔记之 列表
list函数 list函数将其他类型的序列转换为列表,如 >>> list("hello world")['h', 'e', 'l', 'l', 'o', ' ' ...
- 转: fscanf()函数详解
以前解析有规律的文件的时候要么用正则表达式,要么就是傻傻的自己写程序来解析有规律的文件.今天突然发现c的库函数中有一个现成的可以解析有规律的文件的函数,就是fscanf()函数.哎 以前自己做了这么多 ...
- Unity中的各种寻找GameObject方法
1.GameObject.Find():寻找Hierarchy面板中的activie 不为false的游戏对象: 路径如官方事例写法: public class ExampleClass : Mono ...
- nodejs定时任务node-schedule
1:使用npm安装node-schedule模块 npm install node-schedule (1)每隔5分钟执行一次: var schedule = require('node-schedu ...
- Android中观察者模式的升入理解
以前对Java中的观察者模式只知道一点皮毛,在接触Android的过程中,逐渐认识到观察者模式是如此的重要,android中许多地方都用到了观察者模式例如ContentResolver操作,来总结一下 ...
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结
方式一: 已将图片保存到drawable目录下,通过图片id获得Drawable或者Bitmap,此方式最常用.(若只知道图片的名称,还可以通过图片的名称获得图片的id) (1)通过图片id获得Dra ...
- delphi编写dll心得, 谢谢原作者的分享。转
delphi编写dll心得 1.每个函数体(包括exports和非exports函数)后面加 'stdcall;', 以编写出通用的dll2.exports函数后面必须加'export;'(放在'st ...
- markdown转dokuwiki
markdown markdown格式变得越来越通用,很多博客,云笔记,github等等都支持markdown编写,markdown也能很方便的转化为pdf,html等格式.公司的文档用的dokuwi ...