[公路]绝对光年 (14)

【题外话】

纯属光年.jpeg

不久前实验室要本人修改C3D(The 3D Biomechanics Data
Standard)文件,尽管从网上找到了一个叫c3d4sharp的类库,这个类库单纯读取C3D文件的话还足以,可是倘使要兑现修改或者制造C3D文件就相比较费力了。同时c3d4sharp实现得相比较简单,很多C3D文件里有些数据都不援助。好在C3D文件总体不是很复杂,于是我就起来重新写了一个C3D文件读写的库,现在在codeplex上创办了个系列叫C3D.NET

第十三章(+):衡水

我在黄冈火车站相对续续地睡了一夜,半夜列车到站,阵阵轰鸣声把自己吵醒,当人流像潮水般退去,復苏平静的时候,我才可以重新入睡。
自我尚未带眼罩耳塞睡觉,在火车站里,我或者时刻警醒着。
半夜醒过来的时候,我发觉姜来人不见了,只剩下行李在自家身边,我心头咯噔了弹指间。
直至自己看到他迷迷糊糊地从洗手间里面走出去,我才松一口气。
人一连会变的,而且变得专程快,在近来,我还在想怎么摆脱姜来,然而前些天,我却出人意料担心他会不辞而别。

类似中午,人更是多,睡眠被卡住得专程的屡屡,我干脆不睡了。
我拿着洗漱用品在盥洗室里草草地清洁,冷水洗过脸之后,整个人都鼓足爽快。
自我买了两瓶咖啡回去座位上,姜来也醒过来。刚睡醒的他,看上去呆呆的,我递给她一瓶咖啡,他拿在手上,咕噜咕噜地全喝光。
“现在几点了。”他带着一嘴咖啡味问我。
“还早吗,现在7点不到。”我抬头看着挂在车站里的大钟表,慵懒地说。
“我们几点的火车。”
“10点35分。”
“我的天,还要等这么久。我真后悔,今儿早上为什么不去住飞快宾馆吗?这一宿我都没睡好,现在浑身特别难受。”他站起来,伸了个懒腰。
“后悔也晚了。你去洗漱一下,精神爽快点。”
“好啊。”他没法地说。

中午7点过后,火车站挤满了人,行李堆得到处都是,我带上动铁耳机,看着电子书,对这么些世界不闻不问。
姜来继续看他的《在路上》,不知底,他追随着书里的骨干去到咋样地点了。
自己身边的坐席来回换了一些波人,他们坐下来,吃着喝着说着笑着,然后又坐上列车,在车上继续吃着喝着说着笑着,到此外一座城池,过着一样的生活。
终于熬到了10点35分,我们登上了K1278次列车,下一站是吉林怀化。
刚上车,姜来对自我说:“我们这一次来内蒙古,都没有亲自踏上这里的草野,有点可惜。”
本身说:“没什么可惜的,我们一路上,能收看更多的草地,去内蒙古的草地,最好的法门,是自驾,我们都不会开车,难道在草原上徒步吗?”
“我们无法骑马吗?”姜来问。
“你会骑马吗?”我问。
“不会。”
“这你依然别考虑了。”

当大家的火车徐徐往交大去,我问姜来对青海有怎么着概念不?他说,不明了,应该满地都是煤矿吧。
自己说,你错了,这不叫煤矿,这叫金矿,挖出来的,都是钱。
这句话,其实不是本身说的,这是自我一个浙江的好爱人——小于,告诉自己的。
他家做煤矿生意,他们管煤矿叫黑金。他告知自己,时辰候,几乎每一户海南居家,都有家室和亲朋好友,直接或直接地从事煤矿工作。
而他家,更加疯狂,父辈整个家族,从老到少,都聚精会神地投入到煤矿事业的建设,依照现行的术语,应该叫煤矿产业链全覆盖,从挖煤,煤矿器械,到煤矿运输,甚至是煤矿提炼,都在她家族的掩盖下,蒸蒸日上,红红火火。
他家里所有人都对煤矿有着近乎神经质的热忱。
在河北从业煤矿行业的人,最畏惧的就是遇上矿难,也就是所谓的见红,所以,吉祥的新民主主义革命,在他的家族,并不讨喜,他说他俩家,一向不穿黑色的衣物。
转头,也能够想象,他的家门,最欢喜的颜色,肯定是藏青色。
她跟自己说,旁人家过新春的时候,挂的都是甲戌革命的春联,唯独他们家族,用的是肉色的纸,再配上鲜亮的金漆字。
自我一筹莫展想像肉色的春联挂在家门口的楷模,但自身能想象,假设世界一片漆黑,这该多可怕。

紧跟于是家门内部,唯一没有从业煤矿事业的人,他为了逃离家里人的牢笼,高三报志愿的时候,他挑选了遥遥无期的江苏岛,毕业后,他采纳到了新加坡办事,从此,和煤矿脱离。
这几年,国家积极提升清洁能源,对煤矿举办控产减产,小于家里渐渐从辉煌走向没落,煤矿关了一个又一个。
低于很幸运地逃离了甘肃,但是,这些和煤矿相依为命的人,则尚未那么幸运,他们不得不无力地,和煤矿一起没落,就像这个,曾经埋藏过无数死尸的,深不见底的煤矿坑。
诸如此类的故事,在江西遍地都是,就像漂浮在四川氛围中的煤屑粉,每一口的深呼吸,都带着淋淋的鲜血。
这就是自己对浙江,简单而强行的记忆。

咱俩的列车,从平原草地逐步驶进高原地区,植被从草甸向常绿阔叶林渐变,人烟和森林一并茂盛。
从廊坊到永州,只需坐4个刻钟的火车,在车上小息一会就抵达了。

河源究竟是个小城市,火车站等候的人也不多,诺大的广场很冷静。
深夜的太阳把火车站广场照得滚烫,德州显然比商丘要炎热,咱们出站之后,没走多少距离就起来冒汗,这跟我们在襄阳的体感完全不一致。
鉴于火车站广场附近在征程维修,大家要乘坐的公交得要走很长的一段路。
俺们背着登山包,在一条无人穿行的征程上走动,路一侧都是些小型事业单位和小个体户的门店,店主大多在苏醒,少数会三三两两集结在同步打牌,看到大家走过,也不会多看一眼。
网上里说安徽的GDP已经是全国最后多少个几名,看来也不是如何虚假音信。
从火车站到大家住的青旅,其实不远,大家上了公交之后,姜来问我:“你确定那家青旅不是黑店吗?”
本身不领悟怎么回复这几个题材,一朝被蛇咬,十年怕草绳,然则除了青旅,没此外选用。
既来之则安之,我对姜来说:“我在大网站预约的,应该不会有题目,我来看它家网上评论蛮高,尽管不是很有益于,但起码安全有担保。”
“我也就顺口一问,反正大不断大家就住快速宾馆。”姜来说。

到了青旅,一切正常,首席执行官娘是个很年轻的中年妇女,接待大家的时候很温和。青旅里,住客很多,五人间里,几乎住满人。那家应该是家正规的青旅,我想。
姜来依旧睡在自己的上铺,他先导爱上了上铺,他说,在上头,空气好。
房间不大,三张左右铺床占据了绝大多数的上空,窗户外面就是临汾古城的步行街,隔着玻璃也能听到外面商户循环播放的让利广告,就像在洗脑似。
葡京在线开户,房间里面只有我们六个,其他的人都出去玩了。
看时光还早,我把姜来从上铺拽下来,带他到青旅旁边的千年古刹——华严寺。

自身的学习者证一贯派上用场,姜来每趟看到自身用假学生证都会给自身翻白眼,他会说这么大的人还用学生证真不要脸。
要不要脸都是次要,最首要的是,我能省下一大笔钱。
在入口处,工作人士让自己体现学生证,姜来认为我就要被罚,幸灾乐祸地说:“这年头,长这么老的大学生也是难得一见。”
自身笑着给验票员出示学生证,她看了本人一眼,笑着说:“不老不老,那小伙子长得水灵灵的,走吗,进去吧。”
走进去寺里面之后,姜来絮絮叨叨地说:“这多少个老大姑肯定是老眼昏花,都28岁的人,还水灵灵的,四姨对您有意思啊,谢已,要不你就从了大姑,在陕西十全十美吃饭呢,说不定四姨家是煤矿主,你之后有福了……”

华严寺历经千年的风雨,集结了三朝的出色,在辽代的地基上,汉代秀美的建筑挽手相连,殿院成林,曹魏留下来庄敬佛塑和牌匾,在宁静的殿里生生不息,寺庙经过一代又一代的人的整治,依旧保持着佛性。
堪称国宝的重楼式壁藏就在薄伽教藏殿里。
全国孤例的重楼式壁藏,上层为佛龛,下层为藏经柜,为了采光和通气,殿后开了一小窗,窗中间有一座小木拱桥左右连连,五间天宫楼阁从左到右分布住着不同的神佛,这是自己向来没见过的殿中殿。
在殿里,还有三十一尊来自辽代的皇家彩塑,每一尊的神气和容颜都各不相同,身上的飘袖和衣带自然唯美,婉丽动人。他们身上的彩漆已经颓落,裸表露自然的纹路,镇守着华严寺已经重重个新春,看到她们,就相当于观察了历史。
出于历史原因,寺庙成了江山重点珍重文物,为了响应政坛的呼唤,不许烧香也不设功德箱,寺中所有的香炉都被大铁板盖上,没有了效用性的香炉成为纯粹的法门装置。
姜来想烧香拜佛也尚未章程了。我觉得那也蛮好的,除了让寺庙更佳干净清爽,更能让佛法显得纯粹,所谓的烧香拜佛,可是是基于欲望之下的讨好。
寺院里还有一座华严宝塔,登塔需要穿上鞋套,大家套上干净的鞋套,小心翼翼地走进塔里。
在塔底的地宫,有云冈石窟创建者昙曜的舍利子,姜来隔着一层厚厚的玻璃,仔细地查找舍利的身影,所谓的舍利子,其实也就是一小块白骨头。
供奉舍利子的金塔花纹繁复,华丽极致,围绕在地宫四周的,还有众三个小佛像,他们在到处看着我们,佛法全写在他们的眼里。
塔里的阶梯相当陡峭,大家很小心地往上爬,宝塔总共有五层,其中,三层明,两层暗,明层能走到塔外,暗层则不可能,寓意着人生明暗有常。
咱俩到底终于通过了拥堵的梯子抵达宝塔顶层,十堰古都的风貌尽收眼底。
咱俩围绕着宝塔走了一圈,在一个小角落里,还察看基督教堂就在华严寺的不远处,寺庙和教堂看上去关系协调,看来佛祖和基督,应该是六个好情人。
透过在线地图,我还发现,在怀化古城之中,还有道教,伊斯兰教和天主教,小小的一座古城,居然容纳了五大教派,这里也算得上是宗教共和国了。
上午的凉风习习,姜来说他在佛祖面前许了个愿,我问他许了咋样愿,他说无法告诉我,不然就不灵了。
本身说自家从未许愿。
她问我干吗。
“三岁这年,父母离异,之后的每一年诞辰,每一回去寺庙祭拜,我只许一个心愿,我不贪心,我只愿意爸妈能重归于好,就这么简单。这多少个愿望从来陪同我到7岁,那一年,我爸娶了新的夫人。从这将来,我再也不许愿了。”我说。
“你是不再信任心愿的能力吧?”姜来问我。
“我不相信。那都是自欺欺人。”
“可自我信任。”姜来的眸子里倒影着夕阳,他一眨眼,这些世界就毁灭了两遍,他一睁眼,那么些世界又重建两回。
“你通晓自家刚才许了个咋样愿吗?我求佛祖保佑,我们必定能成功环游中国。”姜来继续说。
“我刚不是跟你说过啊?愿望说出来就不灵了。”我说。
“我才不担心吗,我了然大家一定能不负众望。”姜来信誓旦旦地说,他总能冒出意外的自信。
“我这辈子许的意愿都尚未一个兑现,你说,我要不要扭转,许一个不容许实现的愿望吧?说不定,就实在能实现呢。”我说。
“你现在还有哪些意思?”姜来问。
“我期望大家不可能打响环游中国。”我笑着说。
“什么狗屁愿望,呸呸呸。”姜来向天空呸了几下,不知底口水会不会滴落到塔下路人的随身。
“这叫负负得正,懂不懂。”
“懒得跟你扯,走啊,我们该出来了。我要上城墙看落日!”说完,姜来急迅地钻进窄小的楼梯,我急迅跟上去。

日照古都不是很大,也不算小,我们从华严寺出来,不到半时辰就走到南门城厢。
半路我们还通过了炎黄最古老的九龙壁,我们抱着老大可望走进去,却只发现除此之外一块九龙壁之外,啥也不曾,络绎不断的旅行团把小小的院落占满,我们呆了不到五分钟就走出来。
跟我们一道走出来的,还有另外一个女童,她盯着姜来,上下打量了一番,脸上一脸愕然的神气,我以为他想要说怎样,结果,她转身就走了。
姜来认为这一个女子莫名其妙的。
“也许人家对你有意思,女子总是害羞的。”我说。
“我这个人,没什么意思,而且自己对她一些意味都尚未。”姜来头也不回,继续往城墙走。

我们从南门登上城墙。
南城墙的瓮城,是四面城墙中最大的,里里外外一共三重,翁城外,还有半月形象的月城,重重叠障,拒人千里。
在和平年代,城墙只具备历史的意思,御敌防守的功效已经丧失,即便如此,新修的开封古城墙,还是保留着来自时光的美。
上了城墙,每走几十米就有一座箭楼,箭楼上的灯笼,随着黄昏的莅临,也逐渐点亮。
城墙很长,总共有7.24海里,若是走路绕一圈,我觉着我会死的。
当大家发现城墙上可以租自行车的时候,我们兴奋得跳起来。
在城墙上骑自行车,这相对是聪明绝顶的意见。
而是,当我们上了车,在崎岖的路面上骑行时,我才发现,这未必是一个好的主见,没骑多少距离,我的臀部就受不了。
姜来也如出一辙,只是,他比我了解,他脚站在自行车的踏板上,半坐着,他说,只要屁股不碰坐垫,那就不会受罪。
当我们骑了一半,我看齐迎面而来一个女子,骑法和姜来一摸一样,看来他的臀部也很难过。
她看了我们一眼,转眼就从我们的身边穿过,在夕阳下,大家目光短兵相接,我认出他,是刚刚在九龙壁遇见的小妞。
姜来只顾着骑车,都未曾留意到她,我跟她说起这事的时候,他说:“你认为日照很大吗?南平就这么点大,再一次境遇也很健康。”
可自我老是认为,这妮子的眼光有点窘迫,不过,哪儿有问题,我又说不出来。

因为臀部疼,我只得在姜来身后渐渐骑着。
从南往北,两边的景致各不相同,西边的古城,颓废,残旧,阴沉,是旧时代的表示;东边的新城,热闹,新颖,活泼,象征着新世界。
多少个世界中间,高耸的城墙像是一道褐色屏障,或者说,一条斑驳的枢纽——它将这两个世界互相维系,互相牵连,这是一种,类似彼此寄生的关系,他们谁也缺不了何人。
千里迢迢地望去,西边的高山上有整齐的风力发电机在运转,他们每转动一圈,阳光就被搅碎成小块,落在地上的时候,已经成了金黑色的零碎,有些会被风吹走,有些会被人捡走,大部分则会默默地死去,那是她们轮回了成百上千遍的气数。
太阳下山之后,城墙上的城楼,角楼,箭楼,统统亮起了黄彤彤的灯光,影子初始在砖墙上盛开。
俺们骑到了北门,发现翁城的城墙上悬挂着一个特大型的壁画,是一个裸体的胖子,灯光打在身上,浑身发白,姜来看看后头哈哈哈大笑,他觉得这一个素描其实是太搞笑了。
自身以学术的角度分析,我觉着这是以超现实的办法对历史举办奚落,不温不火,“圆润”且方便。
姜来说听不懂。我把这话翻译成“普通话”告诉她:
“这就是瞎鸡吧扯蛋。”

骑到西北角,正在翻修的城墙还一贯不并轨,不可能继续上扬,我们回头重返,还了车子,从东门走下城墙。
星夜,城墙上还有旅客在旅游,妈妈五伯在东门的广场放着音乐,整齐地跳着广场舞。
自己记忆了在成都湘江边缘看到的广场舞,准确地说,也无法叫广场舞,因为他俩可不是固定地站在一个地点。
他俩很多号人,排成一列,走在最前方的人背着音箱,用麦克(麦克)风辅导着前面的人群,前面的人随后他,沿着河边一边心满意足一边走着,不知情的人还以为这是什么邪教社团在练功呢。
这时候姜来还给他们取了个特别诗意的名字——蛇舞。

夜间的古都特别安静,小城市的夜晚要旨如此,没有过多的喧哗,也不会过度繁华,一切所得其所。
回去青旅,楼下的步行街商铺也都关门了。
姜来在床上,把大家国旅中国的故事分享给同屋的伴儿们,姜来讲到兴奋的时候两眼会发光,当然,也必不可少加盐加醋,讲到前边的时候,这曾经是一个天马行空的故事,我尽快打断了他,让她赶忙睡觉。
其次时刻还没亮,我叫醒了还在梦境中的姜来,同屋的人还在梦境,有的在呻吟,还有的在说着梦话。
俺们到楼下快餐店吃过早饭,穿过西门,上了公交车,准备前往云冈石窟,我来南充的关键目的,就是为着它。
前些天天色阴沉,大地和天上融为一体,都是惨淡的。
大家坐了一个多钟头的车,终于到达了云冈石窟。

云冈石窟不大,为了让山水更有可看性,在石窟外面还挖了一个人工湖,人工湖上是一座新盖的庙宇,这么些人工搭建的新气象,当年曾被国家文物局叫停,据说是放心不下湖水蒸发,会对石窟岩体造成不可挽回的破坏。至于何以仍能建成,也许是政治和经济之间达到的某种妥协吧。
理所当然,若干年将来,这多少个新造的景致,也许又会再一次变成新文物,历史嘛,本来就是一个好玩的大循环。

走进洞窟,我好不容易看出了原始人对佛法的接头,他们为无形的佛赐予各色各种有形的神态,用雕刻在石块上的故事,循循导人向善。每一尊佛像,每一个花纹,每一幅摄影,甚至每一个笑脸,都藏着难以言喻的神性,空气中间,除了漂浮着的煤尘,还有佛的意志。
洞窟依山而凿,从东魏至今,已经有一千多年的野史,时光凝固在石块上,记录了千年的风浪。
第二十窟的大佛在云冈石窟的最主旨,裸露在外的释迦坐像面象祥和,目光慈悲,俯视着云云众生,可是,第二十窟的大佛并不是最大的。
最大的佛像,其实藏在被半座山覆盖的第三窟里,然而,唯独光明普照的第二十窟取得了最多信徒,他们在大佛面前烧香跪拜,认真诚恳。
姜来站在大佛面前,双手合十一拜。
“本次许了何等愿吗?”我问。
“没有许。在华严寺许过了。”他说。“我假若佛祖,我也会烦。”
我笑了。

突如其来,我看到站在姜来旁边的,是我们明日一遍遇上的小妞,她双手合十,头微微低着,闭着双眼,无声地念道,好像在念经。
自家用眼神向姜来表示,姜来回转眼睛了一下,默默地说了句:“都第五次相遇那女的了,她怎么阴魂不散。好吓人。”
姜来认为自己一度低于了音响,其实并从未,他的话被女生听到了。
他睁开双眼,走向前,小心翼翼地对姜来说:“你……是姜来呢?”
姜来被吓了一跳,快捷问:“我是,你是……?”
“你果然是个大傻逼,姜来,我是年莲,你不记得自己了吧?”

逛完云冈石窟,大家一并回来了城区。大家是指——我,姜来,年莲。
在重临的车上,姜来和自身晾在单方面,和年莲有说有笑。
原来,年莲是姜来的小学同学,他们自从小学毕业之后,就再也没见了,十多年将来的前些天,他们在遥远的山东平顶山,以那一个偶然的办法重新相遇,当姜来听到年莲这一个名字的时候,他激动地和他相认,这种久别重逢,看上去真值得恭喜。
“谢已,我告诉您,年莲是自家小学的好对象,从小学五年级起头,她就从头追自己了。可自己对他一些感兴趣都并未,一贯拒绝她,不过,她这孜孜不倦的动感……”姜来刹车了刹那间,卖了个点子。
“…….最后仍然没能打动我,小学毕业将来,我们就再也从未相会了。”姜来毫不掩饰着祥和以往的自豪,当着年莲的面说。
“你这人真不会说话,哪有您这样的人介绍对象的。”我说。
“没关系,没提到,我从小学二年级就认识姜来,他那德行,我最通晓了。”年莲长发飘飘,长得很甜蜜,说话的动静特别晴朗。
“所以我说得没错呢。你呀,从小开头就不放过我,果然就是阴魂不散。哈哈哈。”姜来说。
“我从九龙壁出来,看到了您,这时候我还不认可你是不是姜来,我认为自己眼花了,毕竟十多年没见了,我怀疑自己看错了,于是,我转身就走。”
“第二次在城墙下边骑单车,我远远地就看到你了,你放在心上着骑单车,没来看本人,但自我盯着你,看了很久很久,我心里面在想,难道他真的是姜来?但天太暗,我或者不确定。”
“直到前天白天,第五遍碰着你,我才认准了您就是姜来,隔了这么久,你仍然那么的帅,看来当年的自己,眼光仍然很准的。可你的性格一点也没变,大白天乱说人家坏话的性情如故老样子。”年莲笑着说。
“这点自己同意,他的嘴巴好像是得了帕金森综合症,没法治。”我笑着说。
“嘿嘿嘿,嘿嘿嘿。”姜来窘迫地笑起来。
“年莲,我跟你赔礼道歉,你知道自己直接是口直心快,心善嘴贱,怪我没眼光,没认出你,谁让你现在长得这么美,换做是其外人,我相信也认不出来。”姜来说。
那话听上去像是道歉,其实是变着办法在赞年莲,年莲听完之后,洋洋得意。
“嘴甜舌滑的实物。如果你十多年前承诺我的求偶,你现在就能够占据我的美了。可惜现在,你现在没机会了。”年莲说话的时候,不检点起撩起协调的毛发,阵阵抚媚从头发布露。
“没悟出,你长成了解后也和自己同样不要脸。对了,你怎么也来梅州了?”姜来问。
“这题目,我也要问您哟。你怎么也来佳木斯了。”年莲反过来问。
“大家在观光中国啊。我们都已经出来走了快一个月了。”姜来骄傲地对着年莲说,声音明亮心旷神怡,车上的人都听见了。
“这么狠心。我是来南平散散心,我正准备离婚呢。”年莲若无其事地研讨。
“离婚!离婚?”姜来再一次了两回以确认自己不曾听错。
“对,你没听错,我要离婚。像本人如此妩媚动人的女性,当然早就结婚了,大学毕业没多长时间,我就结婚了,这都或多或少年前的事了。你吧?老婆孩子还好吗?”年莲问。
“什么老婆孩子,我还没结婚吧,老子才26岁好不佳,”姜来骄傲地说。
“你们男人就是好,越老越吃香,不像我们这个妇女,要是过了25岁还没嫁出去,这就是天大的灾难了。”年莲说。
“可你如此早嫁出去,现在不也是要离婚么?对了,你为啥要离婚呢?”姜来问。
“说起来,很复杂。到站了,大家下车吧。”年莲主动牵着姜来手,下了车,他们的涉嫌,难道已经提升了?

归来市区已经是早晨,年莲带大家到一家很精美的甘肃食堂吃晚饭,她点了满桌的粉条,饿了一天的大家,吃东西的时候就像五只饕餮,山东果然是中华面食之都,只有你想不到,没有做不出来的,当我看出琳琅满目标米粉在自我眼前,我恍然想起了一句广告词:
世界面食在华夏,中国面食在广东。
姜来和年莲聊得动感,点了一瓶四川最知名的景阳春,我惊奇地尝了一口,辣得我浑身发烫,鸡尾酒实际是太可怕了。
她们俩喝得淋漓满面红光,年莲的脸已经通红,据说喝酒脸红的人其实最不吻合喝酒,得咽中耳炎,食道癌,胃癌的几率是常人的几十倍。
本身也是个一喝酒就会脸红的人,所以自己不爱喝酒。有人据此赞美自己特别会爱抚,其实,这不过是自个儿对人身自私的其它一种表现方法。

“姜来,你现在有女对象吗?”借着酒意,年莲尝试更尖锐地询问姜来,当一个女子问此外一个女婿有没有女对象,那纯属是司马昭之心。
“没有,我觉得一个人挺好的。”姜来随口就回应,看来他不懂女孩子的胸臆。
接着,年莲问了一个,这怕我那么些旁人听了也极其难堪的问题,她说:
“如若我离婚了,你愿意和现在的自家在联名呢?”她刻意把“现在的自身”这个字说得特别重。
姜来先是愣了愣,然后哈哈哈大笑起来,餐厅里的人都听见了。
“废话,当然是不情愿了。这应当是自家首先千零一次的不容啊。”
“姜来,你要么那么讨人厌,一点都不会迁就别人。”年莲摆出了一副臭脸,可那幅臭脸,也是可爱的臭脸。
“下次能换个玩笑啊?从五年级到今日,你还不放过我呀。”姜来借着酒气,坐在年莲身边,右手搭在他的肩膀上,就像五个好哥们。
“臭流氓,松开你的咸猪手,什么叫不放过你,我不过有夫之妇。”
“可您快速就足以摆脱了。”
“哎,别提这破事了。来来来,喝酒喝酒。”年莲拿起酒杯,发现中间早已没酒,我赶忙给她酒杯倒满酒。
“对了,姜来,你也没跟自己赏心悦目介绍你爱人。你们是怎么认识的哟。”年莲对着姜来问道,姜来把明早讲给青旅小伙伴的故事复述了五遍,姜来每一次讲故事,都用尽各样夸张的修辞手法。
就像其外人一样,年莲也听得入神。
“谢已,姜来,你们六个的经验丰硕写一本书了。我真佩服你们。”年莲说。“但是,我总认为,你们的故事,好像差了点什么。”
“什么东西?”我和姜来异口同声地问。
“差一个女主角!”年莲说。
本身和姜来面面相觑,姜来和自我的想法应该是相同的,这是我们目前才创建的默契。
“难道,年莲,你是,想当这一个故事里面的,女主角?你该不会,想和我们一齐环游中国吗?”我很认真地问他,我期待不要被自己说中,千万相对。
“什么呀,我才不甘于和你们住青旅睡火车每日累得像只狗似的。我是想说,你们要不要听我的离异故事,你们如果写环游中国的回想录,我的故事,应该能在中间,占一座席吗。”
自我和姜来松了一口气,原来她只想把故事分享给我们。
神州很大,环游中国的征途很窄,六人同行,已经是终端了,五人同行?我的天啊,我实在不敢想象。

年莲喝了一整瓶习酒觉得还不够过瘾,提议我们换个旅社喝酒。
我们看了下时间,已经快十一点了,前些天清晨还要赶火车,我们拒绝了他的特邀。
“年莲,前几日和你久别重逢,我特意喜欢,然则,我们明日早上即将出发,我真正不可以再喝了,前几天我假若起不来,这就夭折了,谢已会把自身杀了。”姜来说。
年莲跟着我们走出餐厅的大门,走路摇摇晃晃地,就像一只醉醺醺的企鹅,她在食堂门口拉着姜来不放,姜来一脸无奈地看着自家,他在向自身求救,我爱莫能助。
说时迟这时快,年莲坐在地上,哭了起来,哭得撕心裂肺的。
自身和姜来不久把他扶他到旅馆旁,姜来说咱们错了,我们去酒吧陪你喝,你不用哭,你不用哭。
大家像哄孩子一样安慰着他,不过她一句话也不说,除了安慰他,叫他不要哭之外,我们都不知晓该说怎么好,刚才还可以够地,怎么突然就哭起来,我和姜来都无语了。

借着路灯,我见状长发之下的她,妆容已经哭花,泪水在眼角下开发了一条流向悲伤的河道,河床下是血和肉,她的榜样,令人特意同情。
他缓了缓,抬开始,用已经哭肿的即刻着我们,她哽咽说着令人无比惋惜的话:
“你们能陪我回来办离婚手续吗?我一个人,实在撑不下去了。我求你们了。姜来,谢已,我求求你们。我…真的卓殊了……”
话还没说完,年莲就昏迷在地上,准确地说,应该是醉倒了,她一身酒气,尽管远隔三米之外,都能闻得到。
路边走过的人,看了俺们一眼,疾速地距离,事不关己,高高挂起。
“现在怎么做?”我问姜来。
姜来把年莲的头放在自己的大腿上,他轻轻地摇了摇她的头,除了散落在地上的毛发在扬尘,依旧尚未反应,她的平静的呼吸声是唯一声明他还活着的印痕。
“这下子,我也不精通该咋办了。”姜来很无奈地说。
年莲的提包被甩到路边,我走过去,捡了归来,手提袋的疙瘩没有扣好,往上一提,里面东西就全都滚出来,眉笔,粉饼,钱包,驾照,各类杂七乱八的东西混杂在一起成了个杂货铺,当自己还在考虑着,为何女性的包包会这么复杂的时候,我见状伴随着一堆化妆品一并掉落在地上的,还有一把手掌那么长的刀,哐当一声,清脆响亮。
口红,绝对是一个女生最有杀伤力的火器,那把武器,几乎每个妇女的包里都怀有。
唯独,年莲比此外的半边天更复杂,我一直没见过哪些女子会在包里放一把刀。
姜来也看看从包里掉出来的刀,吓了一跳。
年莲的动手垂在地上,姜来把他的手抬起来,借着路灯暖黄的光,仔细端详,看完之后,他一脸惶恐。
自我赶忙把地上的事物一股脑丢到包里,走到年莲的身边,姜来抬起她的一手,我来看姜来脸上的惊惧的出处。
年莲的手腕上,好几道刀割的伤痕已经结了痂,鲜红的伤疤相互纠缠,如掌纹一般根植在手腕上,倘若没有错的话,这应该就是传说中的自杀未遂。
要是伤感是种传染病,被感染的,肯定是左手。我举起年莲的左边,果然,左手上边也如出一辙布满疤痕,六只手腕,已经被百般摧残,看不出原来的楷模。
最近,这种无名的传染病也跑到我身上,自从我触境遇年莲的手,身上的每一个毛孔,就先导不停地打哆嗦。
自我忽然想起,刚收拾东西的时候,有一张快速旅舍的房卡在自家面前一闪而过。我神速把包里的事物尽数倒出来在地上翻找,这把沾满血腥的刀也夹杂在其间,姜来把刀从杂物里挑出来,翻过来翻过去看了几眼,然后,他把刀扔到一侧的垃圾桶里,刀在半空中转了几圈,经过了一条圆润的抛物线,准确地落在了垃圾桶里。
自身拨开一堆化妆品,找到了房卡,房卡下面写着酒店的地点,旅社的岗位,就在我们青旅的北侧。
自家和姜来在路边拦了一辆出租车,把年莲抬上了车之后,我让司机带大家到年莲住的酒楼。
通化古城不大,出租车开不到5分钟就到酒吧了。
酒吧没有电梯,姜来只能背着年莲,忙绿地往上爬,酒馆的屋子号很想拿到,年莲的屋子,位于20/3/1号,那不是指2楼31号房,而是指第20家分公司/3楼/1号房,这代表,我们要爬上3楼。
还好年莲不重,姜来还能一气呵成把她背上3楼,房间的门口挂着一块请勿打扰的牌子,应该是年莲出门的时候挂上去的,我把它取下,打开房门,重新把它挂上。
姜来把年莲丢到床上,喘了两口大气,我看看他满身都在冒着热气,像一个刚出炉的馒头。

开辟灯,我看来的,是一个双人房,我不太明了为啥他一个人却要定双人房,在本人眼里,她并不是一个农妇,而是无数个问题的集合体。
屋子里的衣服到处都是,胸罩和内裤随随便便地丢在地上,马桶上,卫生间的地点,还有一块刚用过的手纸,下面沾满了鲜血,已经漆黑,洗手盘下边的护肤品,化妆品,堆成一座小土丘。
现已凌晨12点了,时间也不早了。
自家问姜来:“我们要不回青旅吧。”
姜来没说话,看着年莲,陷入了思考。
“要不,大家前几日晚上就在此间睡呢,反正这里有两张床,我们得以照看一下他。”我说。
姜来只说了一个好字。
姜来帮年莲脱掉鞋子,盖好了被子,还细心地,将他头上的头发理了理,她看起来,就像童话里的睡美人,然则,那样的仙子,为何要自残,我的确想不通。
姜来说他不困,让自身先睡,他把房间的灯关少校来,坐在沙发上,打开电视机,调成静音,电视里播着本地电视台的电视机节目,中间还插播着中午电视机购物广告,广告里的召集人嘴巴张得巨大,表情特别加上,他们正声嘶力竭的叫卖着保健品,收藏品,奢侈品……
静音之后,他们都成了哑巴,也许唯有聋子才听到他们的话。
姜来在屋子里点了一根烟,一呼一吸之间,火光或明或暗,就像一只萤火虫,电视屏幕发出的蓝光打在烟雾上,烟雾把姜来的脸笼罩,逐渐地,我看不清姜来了。
躺在床上,眼睛盯着电视机的屏幕,逐步失去了关键,我是一台老相机,快门和光圈都松弛了,我回忆自己双眼拍下的结尾一幅画面,是姜来默默抽烟的规范。

 

第十三章(-):鱼城

围绕在自家身边的,是四条金鱼,金鱼的水彩对应着风,火,水,土四种元素。
代表风的金鱼是一朵云,隐约看到概况,在它身边有难得风暴包裹着;
意味着水的金鱼是一团火,像燃烧着的火种,火苗在它身上四处乱窜;
意味着水的金鱼是一汪海,水花源源不断地穿梭从它身上溅出;
代表土的金鱼是一块泥,干枯的外表上布满了裂痕,碎泥成了灰纷纷扬扬。

她们在自家的身边,就像四大保安,形影不离,当自身想触碰他们的时候,他们会神速游走,手收回来,他们又自动游回来。
“你好幸运。”一个老头子走到自家的身边对本身说。
她满头白发,脸上的深壑的皱褶都足以夹死苍蝇,红色的前辈斑比太阳黑子还要黑,他拄着拐杖,走路很缓慢,每走一步,都像过去了一个世纪。
“为啥自己是幸运的?”我反问她。
“你富有了这么些宇宙,还不够幸运吗?”
本身往四周看了看,我真站在一片荒芜之地,寸草不生,即便说我所有了那个宇宙,这自己这多少个宇宙也未免太可怜了。
老伴儿用拐杖戳了戳我身边的金鱼,他们急迅地躲避,游到我的身后,就像多少个小孩,看到陌生人,会害怕。
“死亡是以此宇宙里最自私的赠礼。它从不慷慨,但也平素不怜惜。你刚赢得了它,随之而来的,就是新的自然界。”
“你是说,我死了?”
“不不不,在无边的大自然里,平昔没有人能真正地死去。死亡但是是个经过,不是终点。每四遍死亡,随之而来的,都是崭新的新兴,而你,拥有的,就是一个属于你的新的大自然。”
“这是我的宇宙?”我很怀疑自己要好有没有听错,这种话,进了何人的耳根,都会以为不可信。
“是的,你的,全体,都是您的。”老头子背对着我,把拐杖插进地里,抬开始,举起粗糙的双手,他的动作,有一种宗教仪式感。
“这您干什么会师世在本人的天体里。”我对着他的背影说。
她把手放下,回过头,对着我说:
“你那几个题材,问错了。再问两遍。”
本人有点疑惑,但自我要么照做了。
“为何我的宇宙里,只有我和你?”
“又错了。再来。”
身边的鱼类继续在半空中游着,他们有望的榜样让自己记忆了童年的和睦,假设所有的构思都来自生死,那么,唯一的问题,也然而关于生死本身。
“为何,你还并未死。”我问了一个听上去类似不太礼貌的题目,可自我不得不想到那个题目。
“你到底问到点子上了。”
她拄着拐杖走到自己的身边,离我唯有一个拳头的离开,大家过分接近,空气中,我仍可以闻到他嘴里陈年的含意,是一亿本历史书焚化过后的明智的意味。
“我就是你创制的人,你想我死,我便死,你想我活,我就活。”他说道的作品带着安静,我能听出他讲话里,这种主仆的意味,是温柔的服服帖帖,一心一意的尾随。
“假使这是自身的大自然,为何这边怎么都尚未,唯有你?”我问。
“因为你的心扉,现在怎么着都未曾。”
“这你究竟是何人呢?”
“我是您的教员,我是你的主,我是你的神,我也是您的佣人,你成立自己的时候,就是如此定义自己的。”
“我是怎么时候,创设你的?”
“在你需要自我的时候,你就成立了自家。”
“我怎么都可以创造?”
“对,你的金鱼会为你创设一切,他们就是其一世界的主导造型,有了他们,你什么样都足以创制。”
这话听起来很令人兴奋,创建一切?这我不就是神了?
“我想要一条河,一条流向天空的河。”我说。
四条金鱼动起来,一眨眼的功夫,一条巨大的长河就涌出在自家的身边,河流无视着地力和宇宙规则,向天奔流。
老伴笑了笑,什么都不说。
“我想要一座结冰的火山。”
老伴笑了笑,什么都不说。
“我想要长满鱼鳞的鸟。”
老伴儿笑了笑,什么都不说。
“我想要一座黄金造的城建。”
爷们笑了笑,什么都不说。
“我想要…….”

我花了很长日子,从零到有,把一个一体化的世界创立出来,这里有总体我想要实现的光怪陆离事物,身边的荒废早就没有,取而代之的是一个截然陌生的社会风气,一个只适合存在幻想中的世界。
自己看着他俩,却怎么都快乐不起来。
这一个世界,无论从哪些角度看,都专门的违和。
长着腿的蛇在到处爬行,七个乳房的农妇和有三根阴茎的女婿在赤裸裸地做爱,空中的UFO不断掉落奇形怪状的外星人,天空中漂浮着一座座山,山底还有成片的沙漠,会喷火的狗还有会融洽烹饪的猫,这不是一个好端端的世界,不过,这就是自个儿想要的社会风气?
这阵子的好奇心已经一去不返,只剩余和这么些世界无穷无尽的悔恨,当我想问老伴,有没有主意重新再来的时候,他早已消失得无影无踪。
“我想要老头子重新出现。”
老头子仍然不曾出现。四条金鱼也一并消失了。这多少个世界,好像早就改头换面了,我再也无能为力改变。
自家站在这些世界的最下边,以上帝的眼光看着自身创立的全方位,我的子民,我的国度,我的星球,我的自然界。
这就是自己的世界呢?这着实是自家的社会风气吧?

自身豁然想起老头子的话。
想必我死了,这一切就能够重头再来,我想要死亡。
自己纵身跳下,一心寻死,我精通,自由落体运动最后会给自己带来一个崭新的天体。
自我坚信不移。

目录 《相对光年》小说

未完待续,欢迎关注!(14/31)

有关作者:
aloho
。定位为一个幽伤主义的散文家。男,在大迪拜生存,正朝着三字头奔赴,搞过素描和电音,做过网金产品经营,偶尔是一个只做LOGO的平面设计师,拥有一个最好连载的个人诗计划[aloho的床头诗]

2016年畅游中国,回来后憋了一年写本半记实半虚构的小说《相对光年》,自诩这是一本魔幻主义公路小说。

【作品索引】

  1. C3D文件格式的布局
  2. C3D文件头的结构
  3. C3D文件参数集合的社团
  4. C3D文件数量区域的结构
  5. 应用C3D.NET读写文件示例

 

【一、C3D文件格式的布局】

率先说C3D文件全体不是很复杂,也从没过多繁杂的概念,C3D的文档格式可以从其官网下载或在线阅读。首先C3D文件是以Section为单位存储的,每一个Section固定为512字节。Section一定是按顺序存储的,可是有意思的是,Section的序号是从1上马的,而不是0。C3D文件分为三有的,分别是Section
ID = 1的C3D文件头(固定为一个Section,512字节),Section
ID一般等于2(在文书头内会付给)的C3D参数集合以及Section
ID不清楚等于几(在文件头和参数集合中都会付出)的C3D数据部分。

可是C3D也有很复杂的地点,一个是有关整型的行使,可以动用使用有号子的(Int16),也足以采纳无符号的(UInt16),只不过后者能储存的数据量要多一些而已,既然这样,不知怎么当初还要采用有标志的整型。而且最重大的是,文档内没有其他标识能提出文档使用的是何种整型。官方给出的缓解办法是,可以依照例如帧总数、帧索引等判定,如若读出负数,则应用无符号的,否则拔取有标志的。

另一个是C3D文件能在不同类此外CPU上转变,这显示于不同CPU可能接纳的字节序(Endian)和浮点数字不同,比如大家用的CPU都是运用Little-Endian以及IEEE754的浮点数标准。从网上查还发现有DEC
(VAX)以及IBM等CPU采纳不同的浮点数标准,详见我事先一篇小说:http://www.cnblogs.com/mayswind/p/3365594.html。而C3D则是支撑3类CPU,AMDCPU采纳Little-Endian以及IEEE754标准的浮点数,DEC
(VAX)采纳的Little-Endian以及故意的浮点数,MIPS
(SGI)采纳的Big-Endian以及IEEE754标准的浮点数,所以在读取文档的时候可能需要额外开展处理,在第三节会详细表达。

 

【二、C3D文件头的结构】

率先来说第一部分,也就是C3D的文本头,C3D的公文头一定只占1个Section,即一定的512字节,所以假使读取前512字节就足以把全副头数据获拿到了。尽管各样Section有512字节之多,不过对于C3D的公文头只占了很少的一有些,在文件头中有大量空手的区域。其中第一有的是文本头参数部分,内容如下:

葡京在线开户 1

字节 类型 说明
00H Byte 参数集合开始的Section ID(通常为0x02,但也不一定)
01H Byte 文件标识(固定为0x50)
02H-03H Int16 每帧里3D坐标点的个数
04H-05H Int16 每帧里模拟测量的个数
06H-07H Int16 第1帧的序号(最小为1)
08H-09H Int16 最后1帧的序号
0AH-0BH Int16 最大插值差距
0CH-0FH Single 比例因子(正数表示存储的帧为整数帧,负数为浮点帧)
10H-11H Int16  数据区域开始的Section ID
12H-13H Int16 每帧模拟采样个数
14H-17H Single 帧率

在此之后的第二局部,也就是储存的轩然大波,听上去应该占很多字节,不过由于限制了风波数量最多不能够抢先18个,同时事件名称最长为4字节,所以事件部分也只占很少的长空。由于C3D重如若为了记录运动的数量,可能在其中有无数相比重要的地方,事件就是用来标记出这多少个地点的。一个事变包括几个内容,分别是最长四字节的事件名称、一字节的事件是否相应显得的境况以及一个四字节的单精度浮点数表示事件出现的时日。

字节 类型 说明
12AH-12BH Int16 事件名是否支持4字节(支持为0x3039,不支持为0)
12CH-12DH Int16 事件数量(最大为18)
130H-176H Single[] 按事件顺序存储的每个事件发生的时间(第1个帧为0.0s)
178H-188H Byte[] 按事件顺序存储的每个事件是否应该显示(1为显示,0为不显示)
18CH-1D2H Char[] 按事件顺序存储的每个事件的名称(每个事件占4字节)

 

【三、C3D文件参数集合的结构】 

C3D文件存储了大气的参数,其利用了接近目录的点子存储了参数,不过还好只有一级。即参数部分唯有参数组和参数,并且每个参数组里只可以有参数不可能再包含参数组,每个参数必须在一个参数组内。参数集合起先于文件头中的率先个字节表示的Section
ID,平常为2,不过也不肯定,有的文件会在文书头后留出空白,然后参数集合初阶的Section
ID就延期了。所以判断是否为C3D文件千万不要一起初读进去个Int16然后判断是不是0x5002,而一定要咬定第二个字节是不是0x50,确定参数集合的职位也必将要基于文件的首先字节来。

而对于参数集合,最先的4字节概念如下:

字节 类型 说明
00H Byte 第一个参数所在的Section在整个参数集合中的位置(通常为0x01,说明开头4字节之后就是第一个参数)
01H Byte 参数集合部分标识(固定为0x50)
02H Byte 参数集合所占Section数量
03H Byte 生成文件的CPU类型(0x54为Intel,0x55为DEC (VAX, PDP-11),0x56为MIPS (SGI/MIPS))

里面前2个字节官方说一向忽略就行,然而为了配合在写入的时候如故要写进去的。第3字节其实大家按顺序读到头也不需要那么些数目。这里面重要的是CPU类型,由于不同CPU类型选用的字节序以及存储的浮点数字有所不同,所以咱们还亟需基于CPU类型举办相应的拍卖。

对于Intel和DEC生成的文档,都是利用Little-Endian字节序存储的文档,所以必然要使用Little-Endian来读取Int16、Single等品类;而MIPS则运用的Big-Endian字节序存储文档,所以在读取的时候自然要咬定当前总结机默认的字节序以及文档选拔的字节序。

而对此AMD和MIPS生成的文档,对于浮点数字的仓储都是运用标准的IEEE754浮点数字,对于.NET而言不需要举行其他处理;而DEC生成的文档则采用特有浮点数,需要将4个字节全体读取将来再开展分外规的变换,转换方法见我事先的著作:http://www.cnblogs.com/mayswind/p/3365594.html

在此之下就存储着所有的参数了,参数分为两类,分别是参数组和参数。

对此参数组,要存储以下6个内容:

字节 类型 说明
00H SByte 参数组名称长度(如果为负数则表示该参数组锁定请不要修改,而长度为绝对值)
01H SByte 参数组ID的负数
02H – … Char[] 参数组名称(仅包含大写字母、0-9以及下划线_)
… + 1 – … + 2 Int16 下一参数组/参数的偏移(包含本内容的2字节)
… + 3 Byte 参数组描述长度
… + 4 –  Char[] 参数组描述内容(ASCII码)

C3D文件没有规定一个参数组后面跟另一个参数组仍然跟该参数组里的富有参数,所以读取的时候要注意下。而参数的情节则与参数组基本雷同,只是在下一参数组/参数的撼动与参数组描述长度之间存放着该参数的实际上数目罢了,由于地方描述起来太费事了,这里就不写了。

字节

类型

说明

事先的情节

 

Int16

下一参数组/参数的舞狮(包含本内容的2字节)

 

Byte

参数存放内容的项目(-1 Char,1 Byte,2
Int16,4 Single),绝对值即为长度

 

Byte

参数内容维数(0-3)

 

Byte[]

参数每一维大小(即使维数为0,就从未有过此部分)

 

Byte[] 

参数实际内容

 

Byte

参数组描述长度

今后的始末

此间需要验证的就是,由于参数可以存放数组,所以扩大了维数的标识,即当维数为0时,存放的内容为Char、Byte、Int16、Single等转移出的字节数组;而当维数为1时,存放的为Char[]、Byte[]、Int16[]、Single[]等转移出的字节数组,以此类推。而对数组的仓储,其实就是数组每个元素依次举办仓储,而对此多维数组,则是按行优先开展仓储的,比如三维数组,先存储Data[0,0,1]再存储Data[0,0,2],依次类推。

不过需要验证的是,对于Char[]以及Char[,]这二种,假使表示的话实际应当相应的是String以及String[]。

 

【四、C3D文件数量区域的布局】

C3D数据区域以帧为单位寄放的,其实一定于那多少个区域就是一个帧的集结。而C3D帧其实分为二种,一种是整数帧,而另一种是浮点帧。这两者的区分在于,前者存储的享有情节都是Int16,而后者则为Single,除此之外,前者的3D坐标点(X、Y、Z)还索要倍加比(Gaby)例因子才方可,而后人存储的始末相当于已经乘以了百分比因子了。

数据区域先河于参数集合中的”POINT”参数组中的”DATA_START”参数,其代表数据区域起先的Section
ID,除此之外,在文件头中也有一份副本。不过按照法定的说教,如若文件头和参数集合中都一些内容,优先读取参数集合中的数据。

对此每个帧,又饱含两个部分,第一片段为3D坐标点部分,第二部分为仿照采样部分。

  • 对此每帧的3D坐标点部分,存储着该帧所有3D坐标点的数码,每个3D坐标点包括4个Int16或Single数据,分别是X坐标、Y坐标、Z坐标以及Residual和Camera
    Mask,其中Residual和Camera
    Mask共占一个Int16。相比有趣的是,对于浮点帧,Residual和Camera
    Mask依然也如故一个Int16,只可是存储的时候要将相应的数值转换为Single再拓展仓储。

    • 对此浮点帧,存储的X、Y、Z坐标就是其实的坐标;而对此整数帧,存储的X、Y、Z的坐标还索要倍加比(Gaby)例因子才足以,比例因子存储于参数集合中的”POINT”参数组中的”SCALE”参数。
    • Residual和Camera
      Mask共占一个Int16,将其转移为字节数组之后,高位字节(第1个字节)的最高位表示Residual的符号,即意味着该坐标点是否有效,就算为0则象征有效,假如为1则象征无效,而剩余的7个字节则为Camera
      Mask,每一位表示一个素描机,从没有到高位分别代表7个录像机是否拔取(为1为运用,为0为未采纳)。而Residual的实际数据则为字节数组的第0字节乘以比例因子(浮点帧则为比例因子的相对值)。
  • 而模仿采样部分,则存储着该帧所有的依样画葫芦采样的多寡,但是每个帧可能包含三个模拟采样,同时每个模仿采样可能又含有两个channel,存储的数目即为该channel下记录的数目。然而存储的数码与事实上的数码还需要依据下述公式举行折算,其中data
    value为存储的多少,real world value为实际的多少。

    • zero
      offset可以从”ANALOG”参数组中的”OFFSET”中得到,该多少为Int16的数组,第i位指的就是第i个channel的zero
      offset。
    • channel
      scale可以从”ANALOG”参数组中的”SCALE”中取得,该数据为Single的数组,第i位指的就是dii个channel的scale。
    • general
      scale是享有模拟采样都亟待倍加的百分比,该数量可以从”ANALOG”参数组中的”GEN_SCALE”中获取,为Single。

    real world value = (data value – zero offset) channel scale general scale

 

【五、使用C3D.NET读写文件示例】

前方说了这么多,其实假诺用C3D.NET来分析的话实际是分外简单的。我们可以从https://c3d.codeplex.com/下载C3D.NET的二进制文件或者源码,引用后第一的类都在C3D那一个命名空间下。

对此遍历所有的3D坐标可以运用以下的点子,首先可以从文件或者从流中创设C3D文件,然后从文件头中读取存储的第1帧的序号,然后读取采样点的数额就足以了,当然也可以不从参数组中读取,直接行使file.AllFrames[i].Point3Ds.Length也可以:

 1 C3DFile file = C3DFile.LoadFromFile("文件路径");
 2 Int16 firstFrameIndex = file.Header.FirstFrameIndex;
 3 Int16 pointCount = file.Parameters["POINT:USED"].GetData<Int16>();
 4 
 5 for (Int16 i = 0; i < file.AllFrames.Count; i++)
 6 {
 7     for (Int16 j = 0; j < pointCount; j++)
 8     {
 9         Console.WriteLine("Frame {0} : X = {1}, Y = {2}, Z = {3}",
10             firstFrameIndex + i,
11             file.AllFrames[i].Point3Ds[j].X,
12             file.AllFrames[i].Point3Ds[j].Y ,
13             file.AllFrames[i].Point3Ds[j].Z);
14     }
15 }

而读取模拟采样的话,采纳的格局也相近:

 1 Single frameRate = file.Parameters["POINT", "RATE"].GetData<Single>();
 2 Int16 analogChannelCount = file.Parameters["ANALOG", "USED"].GetData<Int16>();
 3 Int16 analogSamplesPerFrame = (Int16)(file.Parameters["ANALOG", "RATE"].GetData<Int16>() / frameRate);
 4 
 5 for (Int16 i = 0; i < file.AllFrames.Count; i++)
 6 {
 7     for (Int16 j = 0; j < analogChannelCount; j++)
 8     {
 9         for (Int16 k = 0; k < analogSamplesPerFrame; k++)
10         {
11             Console.WriteLine("Frame {0}, Sample {1} : {2}",
12                 firstFrameIndex + i, j + 1,
13                 file.AllFrames[i].AnalogSamples[j][k]);
14         }
15     }
16 }

除外一次性将C3D文件内容总体读取出来的这种艺术以外,还足以使用C3DReader来一帧一帧的读取。

 1 using (FileStream fs = new FileStream("文件路径", FileMode.Open, FileAccess.Read))
 2 {
 3     C3DReader reader = new C3DReader(fs);
 4     C3DHeader header = reader.ReadHeader();
 5     C3DParameterDictionary dictionary = reader.ReadParameters();
 6     Int32 index = header.FirstFrameIndex;
 7 
 8     while (true)
 9     {
10         C3DFrame frame = reader.ReadNextFrame(dictionary);
11 
12         if (frame == null)
13         {
14             break;
15         }
16 
17         for (Int16 j = 0; j < frame.Point3Ds.Length; j++)
18         {
19             Console.WriteLine("Frame {0} : X = {1}, Y = {2}, Z = {3}",
20                 index++,
21                 frame.Point3Ds[j].X,
22                 frame.Point3Ds[j].Y,
23                 frame.Point3Ds[j].Z);
24         }
25     }
26 }

对此开创一个C3D文件,只需要动用C3DFile.Create()就可以创建一个空的C3D文件的,不带有其他的参数集合。而保存C3D文件则一向利用file.SaveTo(“文件路径”)就可以了。

对于增长参数集合可以利用以下的代码:

1 //首先需要添加参数集合,ID为正数
2 file.Parameters.AddGroup(1, "POINT", "");
3 //然后往指定ID的参数集合中添加参数即可
4 file.Parameters[1].Add("USED", "").SetData<Int16>(5);

添加帧可以运用如下的代码:

1 file.AllFrames.Add(new C3DFrame(new C3DPoint3DData[] {
2     new C3DPoint3DData() { X = x, Y = y, Z = z, Residual = residual, CameraMask = cameraMask},
3     new C3DPoint3DData() { X = x, Y = y, Z = z, Residual = residual, CameraMask = cameraMask},
4     new C3DPoint3DData() { X = x, Y = y, Z = z, Residual = residual, CameraMask = cameraMask},
5     new C3DPoint3DData() { X = x, Y = y, Z = z, Residual = residual, CameraMask = cameraMask},
6     new C3DPoint3DData() { X = x, Y = y, Z = z, Residual = residual, CameraMask = cameraMask} }));

本来,也可以将C3DPoint3DData数组换成C3DAnalog萨姆ples数组,或者双方同时加上也得以。

 

【相关链接】

  1. C3D.ORG:http://www.c3d.org/
  2. c3d4sharp – C3D File reading/writing tools written in
    C#:http://code.google.com/p/c3d4sharp/
  3. C3D.NET:https://c3d.codeplex.com/