sfm眼睛带viewtarget制作
要做眼睛,各位请做好被虐哭的准备。
本篇教程将由三部分构成:一、起源1的眼睛到底什么原理;二、正确的制作方法;三、一些小问题。
一、起源1眼睛的原理。
现在的游戏对眼睛的制作是通过对眼球骨进行骨骼约束,两个眼球骨都有个固定的人体外的骨骼,即目标骨骼,通过约束可以让眼球朝向目标骨骼。
但是起源1的操作让人迷惑:
首先,模型没有眼球骨骼,却有着眼球材质。
第二,眼球的权重被放置在头骨上。
第三,眼球不必须是个球体,可以是一个片,可以是半个球,可以是椭圆,总之什么都行。
第四,眼球被分成了眼白和虹膜,眼白不能动,虹膜可以在眼白上滑动。
第五,虹膜滑动不是真正的滑动,而是通过UV移动来假装虹膜的滑动,下面给大家上个示意图,大概就是这样,通过移动uv来让眼睛看起来好像是在转动,但其实并没有动。
第六,眼球材质与平常的贴图不一样,使用的眼球的专属材质,但是,这个专属材质在多年发展中自己也发生了变化,从”Eye”变成了”EyeRefract”,前者的着色器支持眼白和虹膜的贴图,而后者支持<环境光遮蔽纹理>、<envmap反射纹理>和<Cornea角膜纹理>。您也许觉得更新换代是好事,但是我要说的是,后者着色器的缺心眼设定是,模型材质<必须>提供上述三个纹理,否则就显示紫黑格子或者奇怪的反光,如下图所示。
正常⬆
缺少ssao⬆
缺少c⬆
缺少env⬆
然而大家也都深有体会,envmap从头到尾对自制模型作者一点也不友好,一个是很难自制envmap,另一个是envmap的版本问题会导致有的地方无法使用。环境光遮蔽贴图是3dmax的贴图烘培的产物,用于在静态光照中模拟模型上的阴影,而这个也是难制作,易出问题。也许您会觉得Cornea角膜纹理可能会好制作一点,那么我可以负责任的说,这个纹理简直是个反人类的贴图属性。一般来说,我们会使用蓝色调RGB贴图来作为法线贴图,但!Cornea角膜纹理使用红绿通道作为法线贴图,这是什么弱智操作?这还没完!蓝色通道和透明通道还会作为其他属性去应用,这让一张贴图承载一大堆作用还用反人类的通道做法线,简直就是吃饱了撑的,因此大可以放弃这个”EyeRefract”着色器,回到早期的”Eye”着色器去使用。
第七,UV滑动即可实现眼球假装转动,但是您需要在qc中写下一些特定属性,才能让模型编译过程中,为mdl模型生成处于模型中的一些隐藏的射线。这些射线的作用是,为引擎标注每个眼睛(可以多个眼睛)的根部位置,以及眼睛应该朝向的正方向。
此部分的原理是:1、眼球根部位置可以指定每个眼球的UV该如何旋转,大家都懂两点确定一条线,于是这种射线便由眼球根部射出到Viewtarget上,这个射线与眼球模型相交的地方便将UV的中心放到这里。2、标注eyeposition属性和attachment属性可以告诉眼睛应朝向的正方向,这个正方向作为一个向量,将与步骤1中的Uv变换相互呼应,将UV的形状进行拉伸,以显示正确的虹膜比例在非中心位置。(可能您会看不懂这部分,其实我也不懂,我只是通俗地解释了一遍,虽然解释的不特别准确,但是只要提供正确的位置信息,它就能正确运行,就是这么不讲道理,非常无语。)
第八,在您做好所有上述准备后,qc中还需要额外的属性才能让sfm正确识别眼球部分qc并创建viewtarget。这个额外属性是两个flex滑条,这个滑条部署在attachment属性提供的”eyes”上面,它们同时作为预设属性,可以通过滑条控制Uv的变化。非常重要的是,必须包含这两个属性才能在sfm中看到viewtarget,否则就没有。
二、正确的制作方法
下面进行准备以及制作眼睛的过程。(该过程使用一个我以前转模的模型制作)
*可以看到这个模型只有眼睛骨骼。*⬆
1、删除smd模型的眼睛骨骼
2、为眼睛网格指定新的材质,eyeball_l、eyeball_r
3、将眼睛网格权重指向头骨,此例子中头骨为bip_head
4、将眼睛网格重新展开UV(这步可能不用做也可以)
5、制作虹膜的独立贴图(包含alpha通道,遮蔽虹膜旁的纹理)
6、制作眼白的独立贴图(这里用纯白色代替)
7、把做好的贴图放到材质路径下
8、开始写vmt
"eyes"
{"$basetexture" "flu\HOK\Yao\50502_Yao\eyebase" //眼白"$iris" "flu\HOK\Yao\50502_Yao\iris" //虹膜"$halflambert" 1 //非必要-半伯朗照明"$nodecal" "1" //非必要-禁用子弹贴花
}
9、添加qc内容
Qc写法:
$model "medic" "medic.smd" {eyeball "eye_right" "bip_head" -1.2783 -3.6165 65.0663 "eyeball_r" 1 3 "iris_unused" 0.5eyeball "eye_left" "bip_head" 1.2783 -3.6165 65.0663 "eyeball_l" 1 -3 "iris_unused" 0.5//**下面是关于<smd>模型文件<!非常重要!>的说明://smd模型<不能>包含眼球骨骼,<但>模型网格必须存在,<并且>眼球有UV,材质名为(material name),使用"EyeRefract"着色器//**下面是属性值的说明://eyeball (name) (bone name) (X) (Y) (Z) (material name) (diameter) (angle) (iris material) (pupil scale)//name作用为匹配眼睑规则,只对eyelid属性有效//bone name是眼球模型的权重所在骨骼//***下面是眼球部分://XYZ为眼球的世界中心位置//眼球模型的材质需要是(material name),且眼球的权重应全部为(bone name)//从正面看眼球的宽度比例。用于防止虹膜在头部内滚动。//(angle)为壁虎眼的角度,人类都有2~4度壁虎眼,为防止斗鸡眼//***下面是虹膜部分,可忽略学习://(iris material)<已弃用>,用"iris_unused"代替//(pupil scale)虹膜纹理的比例//必备flex
flexcontroller eyes range -22 22 "eyes_updown"
flexcontroller eyes range -22 22 "eyes_rightleft"
}//眼睛后部的世界坐标
$eyeposition 0 0 70//眼睛中心坐标
$attachment "eyes" "bip_head" 0.002 -3.6165 65.0652 absolute
//添加眼部中心位置到头骨上,absolute使用世界位置
步骤9的操作:
10、查看眼球位置,改qc中位置
由于您的模型可能不是X轴对称,请勿图方便只改一个、其他复制数字,一定要对应好才可以。分别是两个眼球的中心位置,两眼中间位置,两眼睛后部只有Z轴的位置。
11、导出修改后的smd模型并用crowbar打包
12、测试及修改模型
下图可以看到模型已经成功制作完毕了。
图2
移动viewtarget:
但是您可以看到一个问题就是虹膜太小,下面修改,增大虹膜比例。同时模型壁虎眼过大,把度数调小。
成果图如下,壁虎眼好很多,虹膜也比例正常了
三、一些小问题
1、注意您的模型不一定是X轴对称,请记得要对应好所有位置。
2、注意vmt使用eyes着色器
3、注意贴图指向和写法不要出错
4、注意添加qc时添加全,不要出现遗漏:eyeball、attachment、flexcontorll、eyeposition请全部包含
5、请注意眼睛网格权重放到头骨
6、请注意要删除眼睛骨骼
7、请注意要给眼睛指定单独的材质,例如:eyeball_l、eyeball_r
8、注意虹膜贴图文件的alpha通道。
9、qc中调整虹膜大小比例
10、如果因为vta读取问题导致打包错误,请用dmx格式文件或删除vta相关部分再次尝试。
11、生成的viewtarget可能会错误地驱动眼球UV变化,请注意qc中的正确位置填写
12、Blender或其他软件中查看位置时,一定注意您使用的是全局坐标 or 世界坐标。
13、左右眼的位置不要搞混了,而且<必须>先写右眼。
一些bug情况:
1、虹膜过小
2、qc中位置写错(因为这个模型是Y轴对称)
3、vmt使用eyerefract的问题
更新(2021-11-30 素材提供:科普莱bot)
经过科普莱大佬的测试后,发现了新的bug问题,即提供两个位置点(眼睛中心、眼睛中心正后方)不能达成正常效果,会造成眼睛的滑条出现错乱的问题。
为此科普莱大佬参考了【油管视频】 老外的教学,发现在
$attachment "eyes" "bip_head" 0.002 -3.6165 65.0652 absolute
//添加眼部中心位置到头骨上,absolute使用世界位置
这个地方仍需提供给 attachment
函数两个位置,即左眼和右眼的中心位置。具体写法如下图。
⬆修改前
⬆修改后
可以看到加了两个用绝对值absolute
后缀的左眼和右眼的中心位置坐标,效果如下图所示。
左边为修复前,右边为修复后,操作为滑动eye_updown
和eye_leftright
两个滑条。
最后让我们来看一下开心的康普莱。
sfm眼睛带viewtarget制作相关推荐
- win10用html文件做壁纸,利用win10自带工具制作动态壁纸的简单方法
微软在最强大操作系统利用win10自带工具制作动态壁纸的简单方法的详细介绍. 利用win10自带工具制作动态壁纸的简单方法: 把图片做成动态壁纸,总共分4步:1.准备素材,2.素材导入,3.调整效果, ...
- Django网站实战——手把手带大家制作一个经典的网站
一.前言 今天小编带大家制作一个经典的网站的案例,功能包括登录.注册.注销.改密.免密登录.忘记密码,那么下面就让我们开始吧. 二.创建项目并创建子应用 首先创建项目,然后在项目根目录下创建子应用,如 ...
- esp8266 蓝牙耳机_手把手带你制作WIFI智能开关.走进物联网-ESP8266学习日记(三)...
手把手带你制作WIFI智能开关.走进物联网-ESP8266学习日记(三) 2020-05-11 19:43:10 12点赞 137收藏 10评论 上一次我们初步认识了SDK编程和透传,给模组更新FW. ...
- esp8266 蓝牙耳机_走进物联网智能家居-手把手带你制作wifi智能开关-ESP8266学习笔记(二)...
走进物联网智能家居-手把手带你制作wifi智能开关-ESP8266学习笔记(二) 2020-05-09 13:44:11 9点赞 72收藏 6评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标 ...
- Android Studio自带图标制作利器 Image Asset Studio
曾几何时, Android开发没有那么方便, 制作一个图标也许都要请美工, 或者自己花时间去PS. 或者去一些在线图标制作网站, 例如: https://makeappicon.com/ http:/ ...
- 哥们哥们,人机大战晓得吧玩家对战晓得吧,简易三子棋,呕心沥血500行代码手把手带你制作第一个小游戏,可以保存收藏以后接着看哟,最后有源码哦
目录 前言 一.游戏想要有意思,函数不可少,整活的函数 二.三子棋的游戏界面 三.三子棋的功能步骤分析 1.菜单 2.三子棋实现的总体框架 3.棋盘创建 4.棋盘初始 ...
- 【Unity2d】带你制作一款类似于金山打字的小游戏
博主大概08年开始接触电脑游戏,当时玩的是我哥的电脑,那时候家里没网,只可以玩电脑上自带的单机游戏,比如扫雷.蜘蛛纸牌等等,当然还有红色警戒.冰封王座.星际争霸.帝国崛起等等,这些大概是我哥当时在大学 ...
- LED灯带的制作过程
LED灯带生产过程 Automatic production of LED string lights 01 LED灯带 一.电线制作 新年又快到了,装饰室外夜晚的LED灯带为新年增加了很多喜庆气 ...
- 带你制作百词斩单词表读写插件
上篇博文简单的介绍了一下Chrome插件,今天就与大家分享一下我做的这款有实际意义的插件吧. 做这款插件主要是用百词斩站点进行单词学习时,遇到的一点点闹心事儿.在单词表中不能听发音.也不能练习拼写.所 ...
最新文章
- Android MarsDaemon实现进程及Service常驻
- dos拼接字符串以及截取字符串
- 好文推荐(对JScript初,中级者有用):面向对象的Jscript[转贴]
- 如何將Clonezilla live放到一個已經有其他作業系統存在的硬碟中
- 查看UNIX/Linux资源占用的top命令
- Spark _19 _Spark内存管理
- 前端知识点整理(三)不定时更新~
- 插值法补齐缺失数据_数据挖掘非常重要的一步:数据预处理
- 修改系统时间导致myeclipse不能自动发布的解决方法
- 服务器协议热更_汽车和电话的开放协议,以及更多开放源新闻
- 关于事件模型,js事件绑定和解除的学习
- bzoj 2527: [Poi2011]Meteors
- mysql删除员工_MySQL误删数据救命指南:开发人员必收藏
- 淘宝云梯分布式计算平台架构
- 机器学习方法(二)——xgboost(原理篇)
- Android项目导入高德地图
- mysql sql trace_SQL_TRACE及 Tkprof用法以及问题分析
- 计算机声音管理器不见了,电脑Realtek高清晰音频管理器不见了怎么办
- SAP 金额转换成大写
- (2021总结篇)面向对象软件设计模式--(八)结构型模式---树形结构的处理--组合模式
热门文章
- 3年内被辞退5次,35岁程序员该何去何从?太厉害了!
- 在团队中如何带领新员工
- xdf文档怎么转换为pdf_如何将PDF文件和图像转换为Google文档文档
- 关于B2C电子商务顾客忠诚度影响因素的问卷调查
- coreldraw x8段落_CorelDRAWx8调整字间距的方法
- 基于 SpringBoot + Vue 框架开发的网页版聊天室项目
- 下列叙述中正确的是 java语言_1. 下列关于JAVA语言特点的叙述中,错误的是[ ] A、Java是面向过程的编程语言...
- harmonyos和emui 11概念股,从 EMUI11 到 HarmonyOS,华为 UX 设计的思考与传承
- 微信小程序 特殊布局下,页面上拉触底事件onReachBottom无法触发解决方法
- 【Python爬虫学习】八、股票数据定向爬虫(2020年1月31日成功爬取中财网,百度股市通web版404了)