引擎设计跟踪(九.3) 3DS MAX 导出插件 小总结
最近主要工作:
主要在调试材质LOD, 因为材质LOD的框架已经有了,地形里面测试过,但是因为地形里面的贴图都是预载并且处理过的,不需要运行时加载贴图.所以LOD切换后,加载/卸载贴图的部分没有测试,
这次借这个机会测试并且完善了材质LOD系统.
需要注意的一点是,模型在最初加载的时候,只加载diffuse贴图, 后面的贴图加载,就交给材质LOD系统了.
因为导出的是MAX的标准材质,所以diffuse,normal各种类型都是知道的,所以导出这些信息难度不大.
另外研究了一下高光贴图,高光贴图有3种: specular level, specular color , specular gloss
第一种是镜面高光的强度, 即颜色亮度,单通道的灰度.
第二种跟第一种类似,但是分为三个通道,可以对每个通道做处理
第三种是镜面高光的柔和度/范围,(blinn/phong 着色中的power指数),需要一个通道.
specular color + (level/gloss) 可能合在一张RGBA贴图里面
具体参考链接在这里:
http://www.polycount.com/forum/showthread.php?t=76839
下载了一个有specular map的max模型(diffuse+normal+specular),导出并渲染了一下:
另外原模型还带有自发光贴图,但是没有来及写shader,目前shader是手写而且没有加宏, 目前3级LOD, 每种写一个shader...
原max模型在这里下载: http://www.cgmodel.cn/thread-115153-1-1.html
MAX导出插件的配置界面:
尝试性的把自己的UI(MFC)插件加载到Max导出插件中来,然后很顺利的成功了,这样就不用再重新摆UI,用纯Win32写UI逻辑了.
不过使用的是模态对话框,如果使用非模态,因为消息泵在Max里面,不知道会不会有什么问题,不过模态正好,挺合适.
而且UI配置只是数据绑定的一部分,另一部分便利就是可以直接存成XML,也不用重复手写保存配置了,感觉很舒坦.
这个UI是不是很面熟?没错,它就是前面提到过几次的那个复用率挺高的UI, 但是在Max2013里面,默认颜色自己变了.虽然这个UI比Max的ParamBlocks的参数和界面系统弱的多,但是目前还算满足需求,先这样吧.
下一步计划:
一个小问题(与Max插件和模型无关):
目前多窗口的时候,toolbar里面的线框模式/实体渲染模式是全局的,这样会出现诡异的情况:
在窗口A中,点击了线框模式,切换到窗口B,虽然线框模式的按钮处于按下状态,但窗口B没有用线框绘制.
当然可以在切换窗口的时候刷新toolbar的那几个按钮,但是感觉这样有点别扭(自动改变状态的UI不够友好),还是觉得UE3编辑器中的设计好,每个视口都有自己的toolbar和菜单.
所以计划把这个完成.另外多视口/视图的特性很早以前也考虑过,但是后来想了一下,其实不做也可以,所以目前可能不打算做.看情况吧,也许正好借这个机会把多视图也搞定.
之后的计划就是继续动画导出和渲染,但可能会花一定时间准备/预研.