首页 科普 资讯 养生 问答 找医院 相关问答
首页> 问答

用JS去读取【MMD】中vmd文件的那些事

发布网友 发布时间:2小时前

我来回答

1个回答

热心网友 时间:1小时前

MikuMikuDance(MMD)是一个早期用于为v家角色制作舞蹈动画的三维动画软件,尽管模型和镜头的资源已经相当丰富,但作为一个前端工程师,面对mac不支持MMD的问题,我决定尝试用JavaScript读取MMD中用于保存动作、镜头、表情和关键帧的VMD文件。此行动源于对MMD动作编辑的需求以及对JavaScript二进制流操作的学习兴趣。

JavaScript中的二进制流通过`ArrayBuffer`来表示,虽然直接操作`ArrayBuffer`较为困难,但通过`TypedArray`和`DataView`可以较为灵活地读取和操作数据。获取二进制流的方式通常有从`File`对象直接读取,使用`FileReader`的`readAsArrayBuffer`方法,或者通过HTTP请求头设置为`arraybuffer`等。

在读取VMD文件时,需要理解其格式。VMD文件由不同字节区域组成,每部分代表不同的数据。理解了VMD的结构和格式后,通过读取指定长度的数据并根据预先定义的对照表解析,可以成功读取文件内容。其中,VMD文件采用`SHIFT_JIS`编码,使用浏览器自带的`TextDecoder`可以解码为文字,但`TextEncoder`不行。

为了读取VMD文件,我采取了本地文件服务的方式,利用`fetch`请求读取文件内容,并使用`arrayBuffer`的切片功能获取数据。然而,这种方法在循环操作时效率低下,所以采用了基于索引的读取方式,避免了数据引用变动导致的性能问题。在处理字符串时,需使用特定的解码器,如`shiftjis`库,以正确处理`SHIFT_JIS`编码的文本。

版本信息在VMD文件的开头,长度为30字节,包含模型名称。读取时需注意其格式填充的特殊性,如出现乱码或填充非零字符,需进行处理,例如将0或特定值填充的区域排除。读取关键帧时,遵循VMD文件的区块结构,先读取关键帧数量,然后循环读取各帧数据。

读取过程中,涉及数字的处理需要根据数据类型使用相应的`TypedArray`,如`Uint32Array`。读取时,通过`DataView`的`getUint32`等方法获取整数值,注意不同端序的兼容性问题。编写VMD文件时,与读取过程相反,需要生成`ArrayBuffer`并填充数据,使用特定编码(如`shiftjis`)进行字符串的编码。

通过一系列的读取和编写操作,最终实现了VMD文件的读取与生成功能。为了方便他人使用,我封装了一个名为`vmd.js`的npm包,并在GitHub上公开了代码,欢迎使用与反馈。此外,计划将动作生成功能与`posenet`集成,进一步扩展VMD文件的生成能力。
由深圳机场坐飞机到武汉要多久 草鱼养殖技术与鱼塘管理 草鱼养殖技术与鱼塘管理草鱼养殖密度 孕早期宫腔积液的正常范围 三国志战略版嘟嘟队咋样-共存性拉满不吃战法后面还能共存太尉 社稷弓打不过妖星怎么办 泰囵很好看吗?有那么好看吗?票房竟到十亿?主要讲的是什莫? ...找我聊天怎么办?她说想我了,还问我在外过得怎么样,问我什么_百度知 ... ...也就是我嫂子。她生了个女儿,我在她微信朋友圈里发现她宝宝的照片... 作为嫂子,弟媳生小孩了应该怎么问候? 魅族MX2 手机接电话和打电话声音都没有了,怎么办? 魅族MX2视频通话时没声音 魅族mx2打电话没声音 魅族MX2打电话没声音,信号弱 去丽江旅行有哪些娱乐项目值得打卡? 丽江的哪些自然美景令人惊叹? 丽江有哪些适合赏日出的地方? 收入一般什么时候确认 蓝宝石Radeon HD 6670 1GB GDDR5 白金版VS迪兰恒进HD6770 恒金二代 51... 显卡精影hd6750和蓝宝石hd6670哪个性价比高 周五夜放克马里奥游戏如何下载 我是北京建筑工程学院的大一学生,学校逼我们走读,因为宿舍不够了,但... 北京建筑工程学院研究生宿舍的住宿怎么样? 北京建筑工程学院宿舍怎么样啊? 北京建筑工程学院怎么样 北京建筑工程学院有移动,联通或电信的WiFi吗? 关于北京建筑工程学院百万庄校区宿舍上网的问题。 如何判断抖音的真假带货 两种玉米种子都是4200粒一个是3斤6两一个是2斤8两问问哪个好? ...当时送医院检查了,医生说没什么事休息两天就好了! ...氧气含量以20%来计算要制取一瓶氧气体积分数为60%的气体集气瓶... 如何做鸡肉好吃又简单 街上炸鸡块怎么做 鸡肉的价值 用糖生抽和生粉腌制过一天的肉能吃吗 ...每个人都像是我的仇人 总睡不着觉 我是不是得了忧郁症? 总是幻想打架很生气很暴躁睡不着觉 ...各种念头很多,睡觉睡不着,喜欢睡前乱想到自己累为止??是不是得了... 向周围看,用词语带替,意思不变 月亮在怀里还在更新吗? 2014年蜡笔小新的剧场版是什么 出了吗 2013年呢 蜡笔小新2013和2014的剧场版名字 规定女职工禁忌劳动范围的宗旨 12338的宗旨 12338宗旨 手机短信欠条有用吗 ...PPV看电影就会自动断网。要重起电脑才能连接上去 请问我用迅雷下载了电影格式为XV的。然后我又下载了迅雷看看播放器,播 ... 在断网的情况下,看已经下载下来的电影,也没插电源线,看了个10分钟半个... ...断网了,西政的内网还能上吗?我想从上面下载电影。如... 在网上试听音乐.下网了 还能在 电脑 那找到 还有多少人陷入民间金融陷阱 【mikumikudance】在分配mme时,显示显卡不支持是什么意思 林生斌事件发生大反转,赵丽颖为朱小贞发声,这是要真相大白了吗... ...后最新回应!真相令人失望,难道就这么结束了吗? ...真真发文直指凶手,林生斌事件要迎来大结局了吗? ...专一的小说,只能有一个女主修真玄幻穿越都可以,我最喜欢九鼎记,FQ的... 尿胆白偏高是什么病 双下肢水肿,尿蛋白两个加号,尿酸419,球蛋白底,总蛋白低,贫血,心慌是什 ... 造句,每个短语要俩句 cotton round是什么意思 照片怎么摆放在墙上好看 乡村振兴可以考试还是看事业单位成绩 什么视频编辑器最强大?像这样的双重文字是怎么输入的?哪位大神知道 我家的网络经常会出问题,电脑网络连接那个地方会出现黄色的叹号,重启路 ... ...但是过了几分钟后就不能checkout和update了,直接未响应 装了乌龟SVN重启后老出现sending Crash Data?而且老跳出来资源管理器未... Win8.1库被隐藏了怎么找回来? 从扬州和苏州的一个朋友去浙江双溪漂流,请知道的朋友提供下准确从杭州汽... ...说明书上说可以下载,邮箱1161628344@qq.com 邯郸哪有好的中医??、急求 安徽省阜南县方集镇2014年居民人均收入是多少 哪些因素会导致宝宝流口水突然增多? 突然口水增多想吐恶心是不是怀孕了 1/5+1/4。加上1/4等于多少? 1/3+1/4= ? 1/4+1/5= ? 1/5+1/6=? 1/3-1/4= ? 1/4-1/5=? 1/5-1/6=? 1/4+1/5-1/4+1/5=0对的还是错的 棕色鞋子棕色裤子跟什么颜色最搭配?穿在身上 ...的裤子要搭配什么颜色的外套和上衣,还有鞋子? 83年中陆游过了什么样的生活 四字成语表示 kuai 关于内地人跟香港人结婚后的探亲签注申请手续和申领香港身份证等... 湖南津市人和香港人结婚后怎么申请港澳探亲证 香港结婚后。首次探亲证办理的问题 人工智能( AI)的发展会导致程序员的失业吗? 为什么我的索爱MT15i突然一黑屏就无限重启呢?没有刷机过的。求解啊... 索爱mt15i无法解锁,进入不了主页面,无法连电脑 请问我索爱mt15i昨天用甜椒刷机成功了。 今天用的一切都很正常。 重... 索爱MT15i默认主界面如何恢复?不小心把默认的界面删了,屏面光秃秃的... mt15i无限重启强刷是不是用普通数据线 闲鱼开店需要多少钱?需要什么条件? 查自己的保险单有什么方式 反掩码和通配符,傻傻分不清?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com