本文介绍开源库模型的几种输出格式: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的更多相关文章

  1. cesium 学习(五) 加载场景模型

    cesium 学习(五) 加载场景模型 一.前言 现在开始实际的看看效果,目前我所接触到基本上都是使用Cesium加载模型这个内容,以及在模型上进行操作.So,现在进行一些加载模型的学习,数据的话可以 ...

  2. iOS模型输出和打印

    在调试时,我们经常用到输出model,查看数据是否正确,还会在控制台"po 模型"操作,一般输出都是这样的格式的: person is <Person: 0x60800003 ...

  3. 分类模型输出y值

    y=w0+w1x1+w2x2+....+wnxn coef_:存储w1,w2,...wn. intercept_:存储w0 dual_coef_*support_vectors_=coef_ (1)S ...

  4. 【python2/3坑】从gensim的Word2Vec.load()的中文vector模型输出时显示unicode码

    服务器上python2.7 打印出的e[0]对应的是 unicode码 于是分别尝试了用e[0].encode('utf-8')转码 和 e[0].decode('unicode-escape')依然 ...

  5. 如何把ANSYS模型输出为CDB文件并导入FLUENT  【转载】

    转载自: http://linziok99.blog.163.com/blog/static/100157302009320134826/ 在main menu中选择Archive Model ,再点 ...

  6. Qt3D使用assimp加载常规模型文件

    Qt3D使用assimp加载三维模型文件,assimp支持很多常规格式的三维模型格式: 其中支持导入的格式有: 3D 3DS 3MF AC AC3D ACC AMJ ASE ASK B3D BLEND ...

  7. 使用 Assimp 库加载 3D 模型

    前言 要想让自己的 3D 之旅多一点乐趣,肯定得想办法找一些有意思一点的 3D 模型.3D 模型有各种各样的格式,obj的,stl的,fbx的等等不一而足.特别是 obj 格式的 3D 模型,完全是纯 ...

  8. 图示详解BERT模型的输入与输出

    一.BERT整体结构 BERT主要用了Transformer的Encoder,而没有用其Decoder,我想是因为BERT是一个预训练模型,只要学到其中语义关系即可,不需要去解码完成具体的任务.整体架 ...

  9. DirectX11 With Windows SDK--19(Dev) 编译Assimp并加载模型、新的Effects框架

    前言 注意:这一章进行了重写,对应教程Dev分支第19章的项目,在更新完后面的项目后会替换掉原来第19章的教程 在前面的章节中我们一直使用的是由代码生成的几何模型,但现在我们希望能够导入模型设计师生成 ...

随机推荐

  1. IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)

    IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...

  2. 基于verilog的FPGA编程经验总结(XILINX ISE工具)

    1.用ISE仿真的时候.所用变量一定要初始化. ISE默认初始量为"XXXXX", 而Quarters是默认为"00000"的, 其实实际上, 下到FPGA里后 ...

  3. 突破路由mac地址过滤思路

    一.获取合法的mac地址 在拿到无线网络的密码时,主要思路就是,用类似airodump-ng这类监听软件(WildPackets OmniPeek,Kismet),获得合法客户端的mac地址,然后再更 ...

  4. ural 1348 Goat in the Garden 2

    http://acm.timus.ru/problem.aspx?space=1&num=1348 #include <cstdio> #include <cstring&g ...

  5. C++中基于Crt的内存泄漏检测(重载new和delete,记录在Map里)

    尽管这个概念已经让人说滥了 ,还是想简单记录一下, 以备以后查询. #ifdef _DEBUG#define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FIL ...

  6. SpringMVC、Zookeeper、Dubbo使用

    联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使前 ...

  7. PL/SQL 0.几秒出结果,SQL效率一定高吗?

    今天开发问我一个问题,PL/SQL很快出结果了,为什么应用还是很慢 create index F_AGT_SAVB_ACCTINFO_H_idx4 on F_AGT_SAVB_ACCTINFO_H ( ...

  8. java并发6-小结

    为什么需要并发   并发其实是一种解耦合的策略,它帮助我们把做什么(目标)和什么时候做(时机)分开.这样做可以明显改进应用程序的吞吐量(获得更多的CPU调度时间)和结构(程序有多个部分在协同工作).做 ...

  9. android实现对导航Tab设置下划线选中效果

    技术人员核心竞争力还是技术啊.努力提高各种实现效果.加油哦! 直接看效果.此linearLayout只有两个Button ,当选中Button1,Button1有个下划线选中效果.当选中Buton2, ...

  10. HDOJ 1418 抱歉(欧拉公式)

    Problem Description 非常抱歉,本来兴冲冲地搞一场练习赛,由于我准备不足,出现很多数据的错误,现在这里换一个简单的题目: 前几天在网上查找ACM资料的时候,看到一个中学的奥数题目,就 ...