lumion渲染效果
感觉效果还不错,做初期设计方案效果绝对是够用了,完全可以替代Vray了。


3dsmax教学

重新编写一段关于editpoly间隔一格取一个面的算法,我之前也写过一个类似的算法,但是觉得算法太过于依赖数学运算而不是3dsmax maxscript的运算流程的,数学运算的通用性感觉不大好,而且修改繁琐,这次改进的算法就简练多了,可重用性还不错,只要稍微修改几个参数就能得到各式各样的效果,
算法分解:
–建立空数组
n=#()
–分列数。就是一个网格格子纵向的数量
k=32
–数组n的系列排序,初始量为1
u=1
–for循环 a的值等于网格的行数量
for a =0 to 20 do
(
–mod是取余数的运算,当余数等于0时运算代码,不等于0时运行代码
if (mod a 2)==0 then
(
–在if语句中嵌套for循环函数,当等于0时,做k值范围内的循环运算,b的值每次加2取值
for b=1 to k by 2 do
(
–数组赋值
n[u]=a*k+b
u+=1
)
)
else
(
–同上
for b=2 to k by 2 do
(
n[u]=a*k+b
u+=1
)
)
)
–定义变量m,把n数组的数据类型转化为bitarray
m=n as bitarray
–选择bitarray值的曲面
$.EditablePoly.SetSelection #Face m


本实例是做原子运动穿越薄片的效果。制作的原理和上次类似。
这次被穿越的方块不做高低变化,而是体积“坍缩”为零,当原子穿越之后方块体积又恢复到原始状态。这样的变化同样是通过距离来判定的。
select $box*
for t=0 to 100 do
animate on
at time t
for a in selection do
(
x=distance $sphere01 a
if x < 300 then
(
a.width=0
a.length=0
a.height=0
)
else
(
a.width=100
a.length=100
a.height=100
)
)
3dsmax 动画基础,3dsmax脚本动画制作教程


本实例中有点土拨鼠在地底钻洞时地面泥土隆起的效果。
也是使用脚本的逐帧动画,脚本原理跟上一次的那篇文章差不多,大家可以这里《随小球运动而塌陷的方块地面动画-maxscript》查看原理。
其中distance控制方块和球体之间的距离,if判断语句控制球体和方块的位置关系,当两者距离小于某设定值时,高度做相应变化,否则做另一种变化。
for t=0 to 100 by 2 do
animate on
at time t
(
for a in selection do
(
d=(distance $sphere01 a)
h=a.height
if d<100 then
(a.height=200
a.wirecolor=white)
else
(a.height=h
)
)
)


为做出上图的效果,花了点时间想了个算法,相比之前的几个实例算法稍微深了个层次。
算法描述:
n=#() –新建空数组
u=1 –定义变量起始量为1
for t=0 to 100 do –for循环语句,这里是指在0到100帧做循环计算
(
animate on–开启动画关键帧
at time t–在第t帧时做什么
(
for a in selection do –在第t帧时执行for循环语句,这里指的是所有被选择的物体做循环计算
(
x=distance $sphere01 a–定义x变量,变量赋值为球体01和方块的距离,distance是计算距离的变量
y=200–定义y变量,这个变量做下面的比较运算
if x>y then –if条件表达式,表示如果…那么…否则,当x>y是,执行then后面的语句,否则执行else后面的语句
(n[u]=y) –给n数组赋予y的值
else n[u]=x–给n数组赋予x的值
a.height=n[u]–给a(指方块)的高度赋予n数组的当前值(x)
u+=1–递增表达式
)
)
)

[intense_image imageurl=”http://pic-7niu.3dscg.com/sin_curve.gif” /]
喷射出正弦函数曲线的粒子曲线算法
算法解释:animate on 开启关键帧开关,定义一个时间函数t ,时间函数t在0到100帧递增,递增等差为2,在递增的关键帧中“do”一件事情:at time t中复制$(指的是选择的方块),复制后的位置为[5*u , 500*(sin u) ,0],其中u的增量是45,增量的写法是u+=45或者u=u+45这两者都行。
代码
u=0
animate on
for t=0 to 100 by 2 do
(
at time t
copy $ pos:[5*u , 500*(sin u) ,0]
u+=45
)
关键字:maxscript,3dsmax 动画脚本

还是移动帧动画,先看效果

模型建模:制作两层50*50*10的方块,上层贴一张贴图,下层贴另一张贴图,并都赋予UVW贴图坐标,注意下层的效果更上一层有所不同。由于每个方块都要经过10帧动画就要做y轴翻转180°的角度,因此每个方块在翻转前要做自身X轴的“镜像”处理。处理效果如下图

从这个图片看出,方块之间拼接不能构成完整的图形,但是做y轴方向翻转180°之后就刚好还原图形了。
模型完成后,上层方块和下层方块分别执行下面的maxscript脚本,完成动画操作
u=0
for a in selection do
(
movekeys a u
u=u+2
)
本文完
代码备份:之前原以为要把上层下层抽取个一个分别组块,后来发现不用组块也能执行上面的movekeys的命令,那下面这段代码就可以不用了。但写好的代码还是留下备份了。
n=$ as array –定义一个n的数组变量
m=n.count –计算出n数组的数量
b=m/2
for a=1 to m/2 do –for循环
(
y=#(n[a],n[a+b]) –选择集数组
group y –群组命令
)

一个类似流星的小动画,同昨天做的计时器动画原理一样。效果如下

模型建立略过
代码
for a in selection do
(
movekeys a (random 0 100)
)
random 是随机参数,后面带0到100标示输出的随机值是0到100的整数值。
movekeys表示选择的物体移动关键帧,移动的帧数为random的随机值
上次的链接《3dsmax计时器动画小教程》

一个很简单3d动画,在配合3dsmax的脚本语言,就算是初学者也能学会的。
先看效果
[intense_image imageurl=”http://image16-c.poco.cn/mypoco/myphoto/20140923/15/5616http://image16-c.poco.cn/mypoco/myphoto/20140923/15/5616515920140923153451025.gif515920140923153451025.gif?523x473_110″ /]
方法
创建盒子,开启“aotu key”(自动关键帧)
在第0帧,盒子参数1080 90 100(也可以任意,按自己喜好)
在第10帧,盒子参数0 0 0(盒子消失)
在第20帧,盒子参数1080 90 100(盒子又变回原来大小)
以上的步骤,一个盒子的动画就制作完成。
选择盒子,使用shift+i间隔工具,在一个圆圈(之前就要创建好,大小自定)上排列盒子,数量60左右。
排列后看看到一圈的盒子,删除原来的单个盒子,选择排列的一整圈的盒子。
在maxscript中新建maxscript,复制下面的Max脚本,按键盘Ctrl+E运行脚本,动画便制作完成了。
u=0
for a in selection do
(
movekeys a (u+=3)
)
如果动画播放不完整,在帧播放按钮上点击右键,请设定下图这个参数


这个问题老困扰着好多使用和学习3dsmax的初学者啊,很多同学在学习过程中老在问我,还是写个简单的教程吧,真有问题直接发链接得了。
[box] 我在好久之前分享过找回丢失贴图的插件,很好用,怎么用就看这篇文章吧《分享一个功能强大的3dsmax制作效果图的插件-场景助手》《如何把模型连同贴图、光域网一并带走》[/box]
不过话说回来,想要贴图不丢失,平时建模习惯还是得养好。贴图要放好位置,名字命名等。
上面的链接是用插件找回贴图的,如果没有插件或者插件不兼容你自己的3dsmax版本,那就得用3dsmax自带的资源管理器了。
[intense_hr type=”double” size=”small” title=”用法” title_color=”success” title_background_color=”#ffffff” title_position=”left” /]
[box] 注意:这种方法可以找回文件的路径,但是它要求所有的贴图尽量收集到一个文件夹内,否则得多次使用这个命令。[/box]