博客

  • grasshopper软包算法

    grasshopper软包算法

    用grasshopper制作的软包算法,用这个算法可以制作表皮曲面上鼓包的效果,比如水立方的表皮,沙发或者床背景等。

    算法原理:

    把曲面分割成多个小四边形面,再将四边形面划分等分点,选择曲面最中心的等分点(假设为点C),把中心等分点C沿着小四边形面的中心法线运动,运动后得到的点数据(假设为点Y)去替换原四边形面的中心等分点C,最终的点阵列重组(Surface FromPoints运算器)为一个曲面。

    运算结果:

  • grasshopper分组数据算法–数据分流

    grasshopper分组数据算法–数据分流

    grasshopper按分组生成模型。

    该算法也是比较实用的,通过这个算法可以把一个分组数据按照特定的分组分离出来,从而可以的针对各组进行变化,如下图,网格按照间隔的排列生成不同的形态,当然如果有必要的话也可以随机生成不同的模型。

    算法解释:

    首先有一串数据(网格点),默认生成的网格点是按一排为一组的数据构成的,这组数据输入“Param Viewer(数据观察运算器)”,Param Viewer可以查看数据的路径构成和所属路径下的Item(元素)数量,它输出的是路径数据。

    把路径数据再输入“Dispath”里面,路径数据被Dispatch分流为两路数据(数据分流不单单用dispatch的,也可以用其他的代替)。分流后的数据导入Tree Branch中,Tree Branch 会根据导入的数据路径对原分组数据流(网格点)进行筛选,最终得到的就是按分组的数据流了,没有数据流分支都可以独立操作和修改。

    关键字:grasshopper教程,grasshopper算法教程

  • 3dsmax maxscript教程-间隔取一个多边形面小脚本

    3dsmax maxscript教程-间隔取一个多边形面小脚本

    重新编写一段关于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

     

  • grasshopper路径获取运算器

    grasshopper路径获取运算器

    如何获取grasshopper分组数据的路径

    在grasshopper中经常会遇到数据的分组,而且会不停的对数据进行抽取,筛选,再组合等一系列操作,而这个编辑过程如果能借助“路径”的力量,编辑分组数据那肯定是事半功倍的。

    路径它记录是每一个分组数据在“大数据”中的位置,数据之间“匹配关系”都跟路径的位置很有关系。

    路径的表现:大括号{路径}

    如下图:下图是一个树形数据结构,数据第一层路径是{0},第二层数据是{0;0}….{0;4},{0;0}….{0;4}里面分别有一些数据,这些数据的数量都不禁相同。

    获取路径数据我们一般使用Param Viewer,数据导入Param Viewer后得到下列的几个数据Structure (Paths = 5)
    path {0;0} (N = 4)
    path {0;1} (N = 3)
    path {0;2} (N = 5)
    path {0;3} (N = 2)
    path {0;4} (N = 3)

     

  • 3dsmax动画原子运动

    3dsmax动画原子运动


    本实例是做原子运动穿越薄片的效果。制作的原理和上次类似。

    这次被穿越的方块不做高低变化,而是体积“坍缩”为零,当原子穿越之后方块体积又恢复到原始状态。这样的变化同样是通过距离来判定的。

    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脚本动画制作教程

  • 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

    )

    )

    )

     

  • 随小球运动而塌陷的方块地面动画-maxscript

    随小球运动而塌陷的方块地面动画-maxscript

    为做出上图的效果,花了点时间想了个算法,相比之前的几个实例算法稍微深了个层次。

    算法描述:

    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–递增表达式

    )

    )

    )

     

  • 付费文章插件测试-查看文章要给积分的

    wordpress cubepoints插件
    [mycred_sell_this price=”10″ expire=”24″]This content is available for you for 24 hours from the time of purchase. Enjoy![/mycred_sell_this]

  • maxscript 关键帧动画实例–正弦函数曲线生成动画

    maxscript 关键帧动画实例–正弦函数曲线生成动画

    [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 动画脚本

  • 3dsmax脚本动画-放置的图画

    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     ​–群组命令

    )