【WebGL】OpenCTM 格式详解

命题为『OpenCTM 格式详解』实在有点大言不惭,羞羞。

17年过得好快,感觉还没来得及做啊就结了。今年从头到尾同句话——感谢大家一样年之陪同

立即首文章是对 OpenCTM 官方《Developers
Manual》(以下简称手册)中自觉着比根本的可辅助深入理解
OpenCTM 部分的选取。在上一致首文章被自我介绍了怎么在 Three.js 中引入
OpenCTM,传送门《Three.js载入OpenCTM模型》

要词:感谢(最要之),ow,lol,低落,减肥,痘痘,二学位,吃鸡,游戏,渣,佛性,觉醒,决心

合法提供了 C 和 C++ 版本的 OpenCTM API,用于读写 OpenCTM 格式。完整 api
文档可以看《OpenCTM API
Reference》,推荐先看了本文或者《Developers
Manual》(以下简称手册,第二涂鸦)获得一个于完美认知后,再查
API 文档方能快化。


手册里的代码示例都是 C 语言的,如果你莫是 C
语言的开发者也请留步!OpenCTM
可以支持以各个平台,流行语言基本都生自己版本的开源库支持 OpenCTM
文件的读取。不同语言的堆栈底规律还是想通的,所以就算你是 java 或者 js
的开发者,阅读本文为会见指向而抱有助。

寒假(1、2月)

前言

本文首先介绍 OpenCTM 文件内容格式,再解释最重点的 OpenCTM
格式可采取的回落种类,最后会简单介绍一下 C 版本 API 的类似。

     
17年的最为初步,是高校之首先个寒假,记得全家齐去了西安旅行。本来当很美好的旅行,我爹当元旦便受了自己一头一全,于是以传统意义上新春的首先上,我哭着过。每次全家旅行,我都觉着咱们马上无异于下集到一道真不容易,那是真的不合乎旅行,一家三人均是急性子,3独炸药桶,陪在爷爷奶奶出去玩儿。可以说凡是死害怕了。

OpenCTM 文件格式

OpenCTM 文件格式非常简单,它给规划成了非常适合用于现代 3d
图形渲染管线程式
(台湾腔)(如 OpenGL)的格式。以后发生空子可以称一下 3d
渲染管线,现在您可拿渲染管线理解成我们以处理器屏幕上制图的『画笔』工具,且其对收取及之指令发出必然的格式要求。

The triangle mesh, in OpenCTM terms, is managed in a format that is
well suited for a modern 3D rendering pipeline, such as OpenGL.

OpenCTM 格式到底出多简单也?我们还懂得,一个 3d
模型产生顶点面片、顶点颜色、顶点uv等消息。其中,要讲述一个3d模子,最少所要的音讯是范的『及点坐标』和『坐标点组成的面片』这简单个信息(因为只有知道坐标点,并且了解那么几只点是一个对若才能够之出
3d 物体呀)。OpenCTM
十分直观包含了及时简单单必要信息,且支持多另外一些可是卜信息(如顶点颜色、顶点uv,这些都是依据使用状况添加的)。

一个 OpenCTM 文件只包含一个 Mesh,所以本文提及的范都是一个
Mesh。一个文本要分为两局部:

图片 1

1. Mesh 的极信息

差模型的巅峰信息可能装有差别。有的模型提供了顶峰法相,顶点颜色等,有的模型则无。

极中心的极端信息是 Vertex 数组,即至点坐标位置数组。一个终端的岗位由
(x,y,z) 三幅坐标确定,x,y,z
皆为浮点数类型。一个型的坐标信息是一个老老的一再组,每个元素都是一个代表某点某平等以标轴位置的浮点数,从第一个因素开始没三单要素标识一个极限。如果一个模子有
n 个顶峰,那么 Vertex 数组的尺寸也 3n。

叠加信一旦 Normal
数组
,表示每个点之法相,每个点的法相都是3最先之浮点数数组,跟 Vertex
数组相近。还有 UVCoord 数组,表示每个点之 UV
坐标,UV代表模型上接触于贴图的哪个位置获取颜色(如果来贴图),每个终端的
uv 是一个2头版的平头数组。另外有 Attribute
数组
,用来记录定制信息,每个点的 Attribute
是一个4首浮点叔叔组;Attribute 可以就此来记录顶点颜色、顶点权重等消息。

文本中极信息的即使是这样放的:全部底 Vertex,全部的 Normal,全部的
UV,全部之 Attribute…其中 Vertex
是得提供的。顶点的下标(0,1,2,…N)在暗中保证数据的应和关系(没有掌握的羁押下图)。

内需注意的凡,一个文件被之每个终端所拥有的信还是均等之(就是说不可以稍顶点有
uv 坐标,但有点顶点没有,要么都未曾或者都出)。

图片 2

范顶点信息

       
但是,旅行了,还是得满满。每次旅行,我还生一个设法,一定要美努力,为了吃爸妈、爷爷奶奶想吃呦虽吃什么,想感受什么就是体验什么,不必为价格而再三犹豫,最后选择放弃。

2. Mesh 的面片信息

每个模型面片信息格式相同,OpenCTM
只支持三角面,每个面由三独极组成,而模型的顶峰是为下标标识的,所以一个面可表示成三单极点下标的数组(顶点的次第很重大,[v1,
v2, v3] 组成的三角面和 [v1, v3, v2]
组成的三角面位置相同但当之超像相反,我们遂其持有相反的面法相)。模型的迎在一个异常丰富之数组里,数组元素是自然数(包括0),从第一个数开始每三个数标识一个对。一个极可能插手多只对之组合。

图片 3

型面片信息

图片 4

OpenCTM 的回落方式

OpenCTM 官方提供了三种植减少思路,raw、mg1 和 mg2。raw
就是没有减掉的办法(lol),数据结构被压缩算法没有改观,方便开发暨测试,生成速度极其抢。

       
今年过年最开心之行某即是——我购买了守望先锋,哈哈哈哈哈哈哈哈哈。谁说ow要凉,我就是与谁急,哼。我本着ow的怜爱之情好说凡是不过见面愈多。大一该校附近网吧的全场最佳的播报,死好地引发我的眼,人来人往的夜市上,我硬是站着圈了20分钟的全场最佳。总而言之,在春节动着贾了ow,是自己过年炒鸡开心的一样桩事~

mg1 压缩

凡是同等种无损压缩,官方 OpenCTM 库默认使用 mg1 格式生成 .ctm
文件。生成速度比 raw
格式慢(增加了削减的计算量),但是读取速度没有吃大要命影响。

mg1 压缩先将公文再度编码成可减的格式再就此 lzma
算法做无损压缩,保留了富有的浮点数信息。

跟 raw 格式相比,mg1 平均能管极信息压缩到 raw
格式的3/4,面片信息可减小到 raw 的 17%。

开学(3、4、5、6、7月初)

mg2 压缩

mg2 可以是有损压缩,且压缩比还强。mg2 文件之转速度跟 mg1 相差无几。

mg2 在回落面片信息的拍卖上及 mg1
相同,但当极限信息之缩减上更胜一筹。它首先以顶点分割成重粗之半空中,并在稍空间中举行了一部分得力降低顶点熵值的拍卖(算法这块求高手指点),这样一来
lzma 的回落效率能大大提高。

In short, the MG2 method divides the mesh into small sub-spaces, sorts
the data geometrically, and applies delta-prediction to the data,
which effectively lowers the data entropy. The re-coded vertex data is
then compressed with LZMA.

合法也 mg2
压缩提供了一个减去精度参数,从0~9,0表示精度最低但是速度最好抢的减少,9象征精度高而比较缓慢的压缩。此外,官方
API
还提供了于这更加细粒度的精度控制函数,可以决定及不同之极信息,比如自己眷恋使到点坐标的精度也0.01,而模仿相坐标精度为0.1。精度控制以事实上生产遭遇颇有意义,如果你若为此型做
3d 打印,你的模型单位凡 1cm,你的打印机精度也
0.01mm,那么模型的精度如果跨越了 0.01 就从未有过意思了(反正没法给打印)。

世家好依据自己之需求选择相应的压缩格式。

     
上半年自要大一,梳着不对劲的可怜背头马尾,脸上长在相同沾还不年轻之痘痘,体重一直保持以120之上。哪怕是春万物发情,我啊远非遇上一个眼瞎的。夏天就再次不用取了,完全没有悟出,冰城夏天这么热,热的单纯想蒙于水里,咕噜咕噜地冒泡。

官方 API

合法提供了三只类似:ctm_error,CTMexporter 和 CTMimporter。CTMexporter
用于创造 OpenCTM
文件导出的上下文,在是上下文中有不少处理函数。相应的,CTMimporter
提供了 OpenCTM 文件导入的上下文。ctm_error 是一个错误处理类,在 C++
版本的 API 中让 try catch 机制替代。具体要圈《OpenCTM API
Reference》

一、初春

结束语

OpenCTM 格式非常简单,raw
压缩格式的文本进一步适合开发者上手,比较难了解(对己个人而言)的情节是 mg2
压缩格式所用到的优化算法和 lzma 算法的动(mg1 所用到的算法 mg2
也还因此到了),也是于支付环节遇较容易错又不行不便 debug 的局部。

3d
的世界真非常风趣,浏览器也前端开发开启了一个追图形编程的豁口——WebGL,前端能召开的不再单单是界面动画、表单验证,而是可以再次多之触发底层算法和底接口(WebGL
接口),不用在在次猿鄙视链的低端啦~(开玩笑 🙂

不免俗的,帮企业打波招聘广告:

酷家乐春招开始啦,小伙伴们抢拿简历砸过来吧~~~~

邮箱:neitui_qunhe@qq.com

链接:http://wanzi319.legendh5.com/h5/kujiale.html?isappinstalled=0&from=timeline

        春天之事务我大多不记得了。脑子里就发生一部分大致的记——

       
刚开学是3月份,哈尔滨还有积雪残存。这个学期选修的体育课是网球课,因为食盐和冰冻的案由,刚开之几节课,我们还轻松地运动几绕就结了。结束后,开开心心地去就餐。

     
不过,随着天气变暖,我们呢开始正式上课,拿在借来的不合适的网球拍,笨拙地拍来拍去,培养“球感”。

其次、低迷的晚春

     
上了高等学校,看在身边的人口犹当更换美,我心中也殊着急,急于将脸上的痘痘消灭掉。最后当室友的引进下来了中医院,每个月份1总基本上之中西药,不停止的吃,不停歇的上去药膏。至今自己还记得药膏那抹反胃的含意。因为吃药来成百上千避讳,食堂里之饭,我几只能选择部分,清汤寡水,吃到清。

     
大概为是以那片个月,我的心绪,陷入到前所未有的冷淡受,一度怀疑自己是匪是出闹心倾向。每天都过得特别迷蒙,生活啊未尝什么动力。低迷、颓废。身边的液压长期保持低压。怀疑自己,否定自己。

      看了羁押学期中之那段时光的照,整个人口犹是过得可怜不明。

老三、春夏关

     
春夏接中,我们计划去文化公园狂欢。哈哈哈哈哈哈!本来计划班里同春游,后来联合下的大概就出十单人。而且以以为生证明可以打折,没悟出是5状元门票可半价,体验型的票要全额。还吓马上带来的钱基本上,不然当天恐无功而返。那天风颇充分,春天之沙尘还蛮爆裂的,游戏器材及且是灰尘,不过大家娱乐的情怀超了心底的嫌弃。

     
玩的满,于是大家都贡献了同样老波表情包。哈哈哈哈哈哈,感谢我之同室等,提供了丰富齐半学期的笑点。

图片 5

     
当天大幸运的凡,本来认为坐大风,没法儿坐摩天轮了。但是,坚守到最终的我们,赶上了最终一回梦幻而激发的高车轮。(风太特别了,到极点时总觉得要掉下去)

      在那么同样龙,大家吧一头聚餐,吃的凡烤盘,非常好吃(•̀ᴗ•́)

ps:当天己丢了1盒药,忘记吃了一如既往间断药,幸好最后来美食安慰

四、夏天

图片 6

     
后来,忘记呀日子我活动了出来。因为痘痘依旧没呀改进,我也不再吃药。美滋滋地吃那些以忌口不克吃的美味。果然失而复得的幸福大于直接有为。

       
6月——爸妈和另外叔叔阿姨,一起来东北旅行。从长白山重至哈尔滨。一家三人口终于进行今年开学以来第一软会晤(ˈᕐ
̫ˈ⁎)爱自之爸爸妈妈给自己带了各种吃的,又购置了衣物,鼓励自己减肥,哈哈哈哈。虽然好留恋,但是能见面的辰只是发一个上午,来不及一起用餐,我们就算告别了……下次复见面就要7月份了……

       
后来,为了抚慰我,爸妈告诉自己暑假苏州旅行计划。为了打照片中看的,我开了夜间跑减肥的路。感谢朋友毅哥的陪同,没有其,我或许曾经放弃了。

     
在呼呼的热风中,我们也初步下学期的选课,一向是非洲当地人的自家,只选取上了3门户课,其中有数山头要得会挑上的。为了能够得手毕业,哭丧了几许天之本人,寄希望于抢课上,或许是校非常我,我抢到了3门课。并且立即3门课都颇好。good!

图片 7

     
在磨的习和考试受到,盼望着回家之本人,终于于7月初,离开炎热的哈尔滨,回到了重新热之家乡!

该还有众多忆没写及,等自己怀念起来了再也添(≧ω≦)/

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website