萌梦接下来要支持fbx格式的导出



  • 看到有一些小伙伴询问咱们的萌梦动作编辑器何时能够将模型和动作导出到fbx当中,我感到深深的使命感,那就是我们的动作编辑器还需要更进一步地研发才能满足大家的需求。我们已经决定,将fbx的导出作为我们下一步重点研究的方向,准备通过写博客以及公告的方式记录我是如何实现fbx导出功能的。
    0_1525486826301_C020E3C04196D41ACD8007811B27E273.png



  • 这样做的目的是

    假设没有这样的功能,那么意味着一些Unity3D支持的项目,要接纳MMD风格的模型,需要走以下几个步骤:

    pmd、pmx格式模型 → 通过Maya(加插件)导出到fbx → 导入Unity3D进行交互式渲染或者是生成专有的格式

    而Maya这是一个很大体量的软件,安装起来较为麻烦,客观上不利于扩大爱好者群体,我们能够做到的是通过自己对于三维模型格式的认知,制作一个快速导出的工具将模型格式导出到Unity3D支持的fbx当中。这样的工作流就变成:

    pmd、pmx格式模型 → 通过萌梦动作编辑器导出到fbx → 导入Unity3D进行交互式渲染或者是生成专有的格式

    了解一下现有萌梦软件的架构

    首先我们的萌梦动作编辑器是通过插件的形式来组合的,简单地表述,那就是:

    QtDreamMotionEditor
    |-qtdreamrenderassimp
    |-qtdreamrendermmd
    ……

    这就是我们软件大概的模样,我将不是属于本文相关的内容剔除了后,我们的动作编辑器(包括动作编辑器2)包含了renderassimp模块和rendermmd模块。其中renderassimp模块封装了一个开源的模型读入写出库assimp的内容,因此包含了第三方库assimp的部分源代码;而rendermmd模块则是的对mmd相关格式的封装和渲染,包含的第三方库是bullet。

    renderassimp模块支持很多3D格式的模型载入,而rendermmd只支持pmd、pmx和vmd格式的载入。那么我们需要做的就是将、在renderassimp和rendermmd中添加接口,能够撮合两者,实现mmd支持格式的载入,通过内部数据格式再导出到assimp支持的格式。

    我的初步打算是再更改一下QtDreamMotionEditor的代码,添加一个导出的功能,这样至少可以实现一个基本的mmd模型通过我们导出到assimp支持的fbx格式中。


 

走马观花

最近的回复

  • @bladesero Blender 在角色建模和渲染这些方面的确比较强。😄

    我们的软件还在发展中呢。
    18da2116-2055-47c1-8317-1ccde17dfcc0-image.png

    阅读更多
  • untitled.jpg figure角色(WIP2).jpg
    TIM截图20190117184210.png
    使用的软件是blender,zbrush和substance painter

    阅读更多
  • 背景:如果需要qml显示循环list,一般是用3个ListView循环交替,实现伪循环,期间逻辑复杂,容易出错,PathView本身自带循环,所以考虑用PathView实现循环

    设计:PathView显示5条数据,按照垂直List一个个排好顺序,由于收尾移动时候会空白穿帮,所以用clip控制显示中间三条数据

    滚动控制:currentIndex,decrementCurrentIndex(),incrementCurrentIndex()

    代码:

    Item{ id: item1 property int myIndex: 0 property int onePageCount: 3 property real oneHeight: 72 property real oneWidth: 580 property int isCurrentListView: 1 //0,1,2 property bool isAdd: true //direction,down=true,up=false property int hightlightIndex: 0 property int currentIndexPathView: 0 //use this Item{ id: itemClip width: item1.oneWidth height: item1.oneHeight*3 clip: true PathView { id: listView1 width: item1.oneWidth model: listModelSpeedWarning delegate: delegeteLine pathItemCount: item1.onePageCount+2 interactive: false path: Path { startX: item1.oneWidth/2 startY: -item1.oneHeight/2 PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*0+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*0+item1.oneHeight/2 } PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*1+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*1+item1.oneHeight/2 } PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*2+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*2+item1.oneHeight/2 } PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*3+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*3+item1.oneHeight/2 } PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*4+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*4+item1.oneHeight/2 } } Component.onCompleted: { listView1.currentIndex = -1 } } } }

    问题:windows下测试,按住按键不松手,list滚动会卡住,松手后恢复正常,看来list不能滚动太快

    阅读更多
  • H

    @青山白云 只是为了替换GIF,不过目前已经解决加载问题

    阅读更多

关注我们

微博
QQ群











召唤伊斯特瓦尔