设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2677|回复: 10

有关法线的两点补充(强制指定 与 编译时混合)   [复制链接]

Super Moderator

此人已辞职,有事找别人.

Rank: 10Rank: 10Rank: 10

帖子
2341
精华
3
声望
9852 点
金币
3913 Mold
被赞许
-37 次
注册时间
2004-7-17

Modchina元老

发表于 2010-7-8 17:47:26 |显示全部楼层
本帖最后由 阿发 于 2010-7-8 20:23 编辑

本文为此前的教程作的补充(课题:编辑模型法线 http://www.modchina.com/viewthread.php?tid=37020
基本概念不清楚的自己想办法补

1。
把面片顶点的法线修改为并不一定垂直于所在曲面,而是统一指向某一方向(或有不同程度的指向某一方向的趋势),我把这称作“强制指定”。
其表现为,模型的凹凸感变弱甚至消失(甚至于像平面剪纸);更准确地说,就是在不显示纹理的平滑模式下看到几何体表面明暗一致或几乎相同。
normal1.jpg
左图为强制指定,右图为普通

比如打开metaseq看一些**模型,如果你不渲染灯光,无论怎样切换角度,模型的明暗都不变(其实就是说没有凹凸之感)



在3dsMax中可以在修改编辑器中编辑法线,使用阈值越大,则选中的法线越趋同。

在MS3d中似乎不便修改,但可以直接修改smd文件的内容

ref smd中的一个顶点的格式如下:
  1. <Parent> <PosX> <PosY> <PosZ> <NormX> <NormY> <NormZ> <TexU> <TexV>
复制代码
例如
  1. 3   -21.95 8.83 0.07    0.0 .707 0.0707   0.5122    0.9109
复制代码
我们可以自己编写程序或通过文本编辑工具修改NormX NormY NormZ,改为某种特定值,直接目的是为了使法线全部朝向某个方向
根本目的是要实现一种效果——使面片在游戏场景中绝大多数光照角度下都保持足够亮或足够暗
前者比较适合**人物 激光剑剑芯 有色|单色半透明体或不透明体(如有色风镜,不希望其太暗)
后者适合制造黑体(物理上讲在任何温度下,对于各种波长的电磁波的吸收系数恒等于1的物体;也就是说光照上面都不射出,图形学上讲就是看上去一片黑)

让我们来看一个实例:
初音低模 原模mqo不带法线渲染 如果按通常的方法设置并显示法线 无论怎么改贴图 初音很多部位还是一抹黑 就像煤矿矿工(并无歧视之意)
但如果把所有顶点的法线向量都改为(0,0,1)就可以实现基本全亮的效果

normal2.jpg


如果只是想把NormX NormY NormZ修改为特定的值,编程的确可以实现,但有点麻烦,我在此提供一种简单的技巧
使用Ultraedit 多文件替换(或对所有打开文件进行替换) 使用正则表达式查询并替换文本
先要确定只对顶点有效的正则表达式(如果改了joint数据你就悲剧了!)
  1. 4f87080.bmp
  2. 2 1.263457 1.038293 45.584732 -0.099019 -0.948814 -0.299911 0.780000 0.656170
  3. 2 0.447786 0.891751 46.172295 -0.544656 -0.830616 -0.115871 0.736370 0.637100
  4. 2 0.415956 0.960431 45.961231 -0.707271 -0.696713 -0.119832 0.739100 0.649810
复制代码
观察这种格式,可总结出表达式(此例以正则表达式Ultraedit引擎为例)
  1. * * * * * * * * *^p
复制代码
(有关正则表达式语法请参考UE帮助)
然后查找验证一下 看是否能够准确匹配

替换时通配符代表的字符串需要按顺序与之对应
查找
  1. ^(*^) ^(*^) ^(*^) ^(*^) ^(*^) ^(*^) ^(*^) ^(*^) ^(*^)^p
复制代码
替换为
  1. ^1 ^2 ^3 ^4 0.000000 0.000000 1.000000 ^8 ^9^p
复制代码
替换后:
  1. 4f87080.bmp
  2. 2 1.263457 1.038293 45.584732 0.000000 0.000000 1.000000 0.780000 0.656170
  3. 2 0.447786 0.891751 46.172295 0.000000 0.000000 1.000000 0.736370 0.637100
  4. 2 0.415956 0.960431 45.961231 0.000000 0.000000 1.000000 0.739100 0.649810
复制代码
PS: 法线向量的模最好为1,但不为1似乎也没关系;但注意向量不能全部改为(0,0,0) 那会导致数学上悲剧——每个smd会被统计出含有无数多组的法线 从而使编译出错中断






2。
studiomdl有个编译参数-a <value>很少被用到 实际上我也是最近用了GUI studiomdl才注意到的
HL sdk 如是说:
-a <value>        Blends su**ce normals together into single su**ces, optimizing the model in memory.  The default value is 2, which should suffice for everything you do.  It can be played with at your discretion, however.

将面片法线合并,优化模型数据,参数单位为角度,默认值为2。取值范围我测试后认为有效范围在1到180(超出后相当于360-?)之间(GUI studiomdl限定1到90 真是不合理啊)

模型看上去会有特殊的质感:
-a 1
normal3.jpg


-a 45
normal4.jpg


-a 90
normal5.jpg


-a 180
normal6.jpg



GUI studiomdl怎么用我就不说了 图形界面很友好
命令行格式可能不少人都搞不清 包括HL sdk也没有举带参数的例子
  1. studiomdl -a 180 "yoko.qc"
复制代码
引号可去
已有 1 人评分声望 收起 理由
qwe100844 + 10 经典教程!学习了

总评分: 声望 + 10   查看全部评分

此号待删除,不再登陆.

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
2249
精华
0
声望
6052 点
金币
257 Mold
被赞许
0 次
注册时间
2010-6-14

Modchina灌水王 可爱小猫

发表于 2010-7-8 18:37:35 |显示全部楼层
阿婆主外出吃饭中啥意思- -

使用道具 举报

Rank: 8Rank: 8

帖子
626
精华
2
声望
3131 点
金币
1315 Mold
被赞许
66 次
注册时间
2009-1-18

模界神人奖 可爱小猫

发表于 2010-7-8 19:16:16 |显示全部楼层
多半是打错字了,应该是发字。

使用道具 举报

Rank: 8Rank: 8

帖子
626
精华
2
声望
3131 点
金币
1315 Mold
被赞许
66 次
注册时间
2009-1-18

模界神人奖 可爱小猫

发表于 2010-7-8 22:49:33 |显示全部楼层
哪么复杂的东西,让软件自己改就行了。

使用道具 举报

Developers

枫叶兔子额?

Rank: 8Rank: 8

帖子
1063
精华
0
声望
3636 点
金币
1043 Mold
被赞许
4 次
注册时间
2008-8-10

Modchina元老 可爱小猫

发表于 2010-7-10 09:40:14 |显示全部楼层
最后的UE通配符教程相当有用!
这真是一个完美的教程啊~~
疯狂屠戮X开发中
新官网
http://MapleRabbit.vb.vc

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
582
精华
8
声望
10792 点
金币
3444 Mold
被赞许
20 次
注册时间
2009-4-28

星界财团

发表于 2010-7-12 11:21:52 |显示全部楼层
本帖最后由 vluzacn 于 2010-7-12 12:07 编辑

据我所知在室内的地图中,模型各个方向的面的亮度都是相同的。(亮度由正下方地面亮度决定)

室外图是根据地图设置了控制台参数sv_skycolor_r,sv_skycolor_g,sv_skycolor_b,sv_skyvec_x,sv_skyvec_y,sv_skyvec_z。

另外手电筒光线也有作用

使用道具 举报

Super Moderator

此人已辞职,有事找别人.

Rank: 10Rank: 10Rank: 10

帖子
2341
精华
3
声望
9852 点
金币
3913 Mold
被赞许
-37 次
注册时间
2004-7-17

Modchina元老

发表于 2010-7-12 11:59:03 |显示全部楼层
回复 6# vluzacn


    可能渲染出来就那样
此号待删除,不再登陆.

使用道具 举报

Super Moderator

此人已辞职,有事找别人.

Rank: 10Rank: 10Rank: 10

帖子
2341
精华
3
声望
9852 点
金币
3913 Mold
被赞许
-37 次
注册时间
2004-7-17

Modchina元老

发表于 2010-7-28 00:53:07 |显示全部楼层
回复 6# vluzacn


    那些控制台参数是实时有效的吧?
此号待删除,不再登陆.

使用道具 举报

Rank: 3Rank: 3

帖子
38
精华
0
声望
366 点
金币
87 Mold
被赞许
0 次
注册时间
2012-3-20
发表于 2012-4-5 20:35:19 |显示全部楼层
教學粉不錯歐 讚啦!!

使用道具 举报

Modchina声望-尊敬

苦A党里我最狂

Rank: 7Rank: 7Rank: 7

帖子
565
精华
0
声望
2611 点
金币
337 Mold
被赞许
43 次
注册时间
2011-6-28

MTT职员 懒人勋章

发表于 2012-4-7 20:19:28 |显示全部楼层
学习了。。。。。。。。。。。。。。。。。
逃出这里

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

回顶部