Dynamo | 使用Dynamo实现动态时钟和Strandbeest

以前一直觉得用GH做动画很蠢,直到看到了陈辉大神的动画,当场就跪下了。不过我很少做动画,直到现在用GH做动画还停留在拖滑块的程度。Dynamo用得还不如GH,所以更加不忍直视。

动态时钟

动态时钟还是比较好实现的,首先获取到系统时间,然后把时分秒分别解析出来,换算成钟表上每个指针的旋转角度,传入参数即可。

dynamoclock


这里要注意dynamo中有和时间差有关的节点时,需要点击选择“周期性”模式来运行,“手动”和“自动”模式都不会生效。完成以后就是如下的效果:

clock

Code Block的注释如下:

1
2
3
4
5
6
7
8
9
10
11
12
// 如果是24小时制,则需要换算成12小时制时间
hNow = time[0]>12?time[0]-12:time[0];
minNow = time[1];
// 秒数后有好几位小数,指针时钟做不到那么精确,取整
secNow = Math.Round(time[2],0);

// 秒针每秒钟跳一次
secAng = 360/60*secNow;
// 分针每分钟跳一次
minAng = 360/60*minNow;
// 时针也是每分钟跳一次
hAng = 360/12*(hNow+minNow/60);

Strandbeest

这个其实很早就想做了,最开始是看到李卓给发的视频,RedHotBIM做了一个酷炫的Dy动画,搜了一下发现是Dynamo在推上发起的一个挑战,当然没几个人响应,就RedHotBIM给力。。可以看下图,超级酷炫。

RedHotBIMStrandbeest

因为想在Revit中直接看效果,所以没有选择RedHotBIM直接在Dynamo中构造几何的方式,而是和实现动态时钟时一样做了族。一条腿的时候其实表现还能接受的。

singleLeg

上图中其实有一个约束没加对,导致杆件长度发生了变化,但是懒得去改了,因为拼了四条腿刚刚够Strandbeest站起来的时候,Revit卡顿非常明显,读条读太久,已经没法看了。阿西吧,一点都不像海边的风力仿生怪兽,像一个奄奄一息瘸腿螃蟹。回头看看RedHotBIM,居然还残忍的加了光影效果。。

Strandbeest

倒腾了半天,还是没法解决卡顿的问题,暂时来看用族来解决这个问题应该是行不通的。今天已经很晚了,后边有时间再用Dynamo直接几何实现Strandbeest,重新约束杆件长度,然后DirectShape它试试看吧。且听下回分解。

文章目录
  1. 1. 动态时钟
  2. 2. Strandbeest