征集网锐志网络淘途找素材上91
创意在线首页
平面设计交互设计CG动漫工业设计建筑环境数码影像创意搜
 首页大赛征集资讯教程画廊访谈作品集创企同盟设计招聘人才专区竞赛台专题论吧 找素材看酷站设计网址库
教程网 Illustrator、Photoshop、CoreaDreaw、AI教程、PS教程
当前位置:首页 > 教程 > Maya > 正文
改变Sprites型粒子的方向
作者: 来源: 发表时间:2007-8-20 15:22:22 浏览:
01Sprites型粒子可以在每一个粒子上贴图或者贴序列图片,
有大量的例子从一个点发射器发出,注意上图中,箭头的方向没有指向它们各自的速度方向,下面就讲讲怎样改变它们

02首先在Hypershader里面建一个 vector product 节点,把他命名为"camera_to_world"

它将要把在摄像机空间里的UP vector转化为世界坐标系里面的

03设置"input1" 为 <<0,1,0>>,选择 "Vector Matrix Product" 作为运算方法

04连接渲染摄像机得 Xform Matrix 到vector product节点得"Matrix"

05注意两点
看清上面的连接编辑器的连接方向!(红框标注)

选择outliner里面的persp(透视图摄像机),不要选Hypershade里面的perspShape,要不你找不到 Xform Matrix 这一项
outliner persp

06给粒子添加“spriteTwistPP“属性

07添加Runtime 表达式

vector $up=<<0,1,0>>;
vector $cameraup=<<camera_to_world.outputX,camera_to_world.outputY,camera_to_world.outputZ>>;
vector $ref = cross($up,$cameraup);
float $ang=acos(dot($up,unit(particleShape1.worldVelocity)))/3.14*180;

if(dot($ref,particleShape1.worldVelocity)>0)
particleShape1.spriteTwistPP=$ang;
else
particleShape1.spriteTwistPP=-$ang;
就可以了

08下面简单解释一下表达式得意思

最开始的vector product 节点,把在摄像机空间里的UP vector转化为世界坐标系里面的

maya help里面解释的摄像机得Xform Matrix和 Matrix包含同样的信息
( Contains the same information as the matrix attribute on dagNode but it is stored in a format that can be interpolated easily.——maya help )

vector product 节点得input 1是<<0,1,0>>,就是y轴得方向,这个矢量应该是摄像机坐标系得

通过vector product 节点得Vector Matrix Product运算把 input 1变为世界坐标系

 
下面试着分析一下这个表达式(如有不对得,请指出,呵呵)

vector $up=<<0,1,0>>;

定义一个矢量

vector $cameraup=<<camera_to_world.outputX,camera_to_world.outputY,camera_to_world.outputZ>>;

再定义一个矢量,分别取刚才vector product 节点算出的output


vector $ref = cross($up,$cameraup);

定义矢量,矢量 $ref 等于$up,$cameraup这两个矢量得差乘

上面定义了三个矢量,下面

float $ang=acos(dot($up,unit(particleShape1.worldVelocity)))/3.14*180;

$ang得到是一个角度,他是$up 和粒子速度(worldVelocity)的一个夹角

dot——点乘,由于$up是一个单位矢量(0,1,0),速度矢量也单位化了(unit),所以点乘得到两个矢量得余弦值——cos X

通过acos,求反余弦,得到角度,也就是夹角



这时候求得的夹角是用弧度制的
所以要转化为角度制——后面的:

/3.14*180



画个图,可能好理解一些!


09红色的坐标系代表的是世界坐标系

深蓝色的是摄像机坐标系

这里我们的两个坐标系的关系,据了个最简单的:

世界坐标系得xy平面和摄像机坐标系zy平面是共面的,所以世界坐标系z和摄像机坐标系x轴自然平行

棕色的矢量是摄像机坐标系得一个矢量
也就是我们在 vector product 里面的input 1
通过 vector product 的运算,就把input 1转化为了紫色的矢量

这是在世界坐标系得,也就是 vector product 得output
这个output得值赋给了$cameraup
也就是$cameraup等于output了,

矢量$ref是$up点乘$cameraup的结果(就试图中得浅绿色的矢量,哦我这个可能画翻了,应该是z轴向相反的,不好意思,影响不大)

深蓝色得是速度矢量,它和$ref求夹角德余弦cos

因为从y轴顺时针,逆时针旋转相同角度得到的余弦值真好是相反数

来判断spriteTwistPP应该旋转的角度,

这个角度就是变量$ang,只不过是由个角度问题,这个偏向角要和速度方向吻合,也达到最开始我的说的目的了——————箭头的方向指向它们各自的速度方向
 
完了

呵呵~~~
我都有点晕了
有不对的地方,请大家指出,谢谢

在线编辑:morion
本文链接:


推荐阅读:
·2021第十五届“创意中国”设计大奖 征稿章程
·2021第七届“学院派奖”全国艺术与设计大赛征集公告
·青春唯美插画培训网络远程班正在招生
·第八届中国高等院校设计作品大赛启动
·第十二届中国高校美术作品学年展获奖名单公布
·2021第七届“学院派奖”全国艺术与设计大赛征集公告
·第六届“包豪斯奖”国际设计大赛获奖名单揭晓
免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息。对本文有异议,请联络本站!
转载要求:文章作者及来源信息必需保留。转载之图片、文件请不要盗链本站地址,且不准打上各自站点的水印!

近期推荐报道 返回首页更多精彩等着你!

Photoshop| Photoshop快速调出情侣图片柔美的插画艺术| 绝望的小熊—美国插画师Luke
网页设计| 波兰Tiquet网站设计作品欣赏插画艺术| Nanami Cowdroy灵动黑白插画
Photoshop| Photoshop调出美女图片绚丽的橙红HTML/CSS| 实现DIV透明而里面的文字不透明
平面设计| 世界杯之平面广告欣赏插画艺术| Alberto Cerrite&ntil
平面设计| Havaianas人字拖最新平面广告系列网页设计| 英国madefavourite简洁细腻型
关于本站 | 联系方式 | 商业服务 | 合作伙伴 | 站点地图 | 免责声明 | 版权声明 | 在线投稿