NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: syzmatrix
打印 上一主题 下一主题

[个人作品] Maya_power of displaement

[复制链接]
跳转到指定楼层
1m
发表于 2010-10-25 11:18:26 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
maya是一个相当强大的工具,expression和mel就是最好的的证明。下面,我们通过一个简单的实例,来制作下面的效果。

评分

参与人数 3强度 +4 照度 +61 收起 理由
Viking + 2
没碗 + 1 + 9
skywoolf + 3 + 50 很有启发

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享
2m
 楼主| 发表于 2010-10-25 11:19:32 | 显示全部楼层
这种效果类似福斯特的麻花大厦(稍简单一点,但思路一致),一直想把它做出来,经过一段时间努力,终于写出了displacement expression,下面,我引导大家一步一步进行。打开maya,做一个nurbsCylinder,在Y轴上拉长,增加分段数。
3m
 楼主| 发表于 2010-10-25 11:20:00 | 显示全部楼层
下面做简单的shader,做一个lambert,把颜色调黑,然后做一个xray shader连到lambert的incandescence上,因为不是重点,简单说一下,shading network 如下图
4m
 楼主| 发表于 2010-10-25 11:20:24 | 显示全部楼层
然后做一个displacement节点,把它连到lamberSG的displacement Mat上,如图
5m
 楼主| 发表于 2010-10-25 11:20:42 | 显示全部楼层
双击我们的displacement shader,打开attribute editor,在displacement参数处按下右键,在弹出菜单中选create new expression。
6m
 楼主| 发表于 2010-10-25 11:21:09 | 显示全部楼层
好戏终于要开场了,准备好了吗?
先补充一点知识,每一个物体都有自己的uv坐标,它是用来决定纹理分布的,范围为0到1,圆柱的uv分布如下图,我们的shader描述将结合uv,先做一个place2dTexture节点以备后用。
7m
 楼主| 发表于 2010-10-25 11:21:25 | 显示全部楼层
ok,我们来分析我们想要的效果,它实际上是由两个效果组成的,一个在u方向的波浪一样的起伏效果,还有一个的缠绕效果。我们先来实现第一个效果,我们可以用周期性半圆来模拟这种效果,假设我们需要n个半圆,则每个半圆的半径为r=1/n。我们需要求出如图displace的值,很明显,在第一个半圆可以如图求出,其它的使用求余函数fmod。
8m
 楼主| 发表于 2010-10-25 11:21:54 | 显示全部楼层
根据这些思想写下expression:
float $u = place2dTexture1.uCoord;
float $freq=16;
float $r=1/(2*$freq);
float $t=fmod($u,(2*$r))-$r;
float $t2=sqrt($r*$r-$t*$t);
displacementShader1.displacement=10*$t2;
9m
 楼主| 发表于 2010-10-25 11:22:25 | 显示全部楼层
怎么发上去有错误?
没办法,先写完。
可以看到我们基本实现了起伏效果,现在制作缠绕效果,缠绕效果的本质是在u方向产生一个偏移量,这个偏移量是由v值提供,只要令$u=$u+$v,你可以在$v前加一个系数来控制缠绕方向,这是最后的expression:
float $u = place2dTexture1.uCoord;
float $v = place2dTexture1.vCoord;
float $freq=16;
$u=$u+.5*$v;
float $r=1/(2*$freq);
float $t=fmod($u,(2*$r))-$r;
float $t2=sqrt($r*$r-$t*$t);
displacementShader1.displacement=10*$t2;
10m
 楼主| 发表于 2010-10-25 11:23:19 | 显示全部楼层
最终效果如上图,希望你喜欢这个小教程,欢迎朋友们和我一起讨论。
11m
 楼主| 发表于 2010-10-25 17:11:01 | 显示全部楼层
我重新渲染了一张8楼的图
12m
 楼主| 发表于 2010-10-25 18:10:14 | 显示全部楼层
附上场景文件,版本: Maya2011

test.ma

67.38 KB, 下载次数: 30, 下载积分: 照度 -1 lux

13m
 楼主| 发表于 2010-10-25 18:12:50 | 显示全部楼层
这个教程是我7年前写的,真是恍若隔世,发上来鼓励一下学习maya的同学。
14m
 楼主| 发表于 2010-10-27 11:41:49 | 显示全部楼层
我加了几行代码,做出了麻花大厦。
15m
 楼主| 发表于 2010-10-27 11:42:15 | 显示全部楼层
float $u = place2dTexture1.uCoord;
float $u1 = place2dTexture1.uCoord;
float $v = place2dTexture1.vCoord;

float $freq=16;
$u=$u + .5*$v;
float $u1 = $u1 - .5*$v;

float $r=1/(2*$freq);

float $t=fmod($u,(2*$r))-$r;
float $t3=fmod($u1,(2*$r))-$r;

float $t2=sqrt($r*$r-$t*$t);
float $t4=sqrt($r*$r-$t3*$t3);
displacementShader1.displacement=400*$t4*$t2;
16m
 楼主| 发表于 2010-10-27 14:29:59 | 显示全部楼层
new shape with this expression

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-5-23 22:04 , Processed in 0.152773 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表