大家好,我是独孤嘌呤。
今天的视频时间有点长,将近一个小时,而且还只是上半段。内容是教大家用C4D做一个可以用螺旋指数(chirality index)m和n来控制的碳纳米管。
何为碳纳米管的螺旋指数?我们可以通过下图得到答案。图中有两个基本向量a1和a2,分别乘以n和m然后相加,就可以得到一个表示碳纳米管原子排列方向的矢量Ch。它们之间满足关系Ch = na1 + ma2。位于平面内且垂直于Ch的方向即碳纳米管的轴向。
https://www.news-medical.net/whitepaper/20160928/Rapid-and-Quantitative-Differentiation-of-Single-Walled-and-Double-Walled-Carbon-Nanotubes-using-Analytical-Ultracentrifugation.aspx
不同的n和m值可以得到不同类型的碳纳米管,一般来说:当m=0时,得到的是Zig-zag型;当m=n时,得到的是Armchair型;介于两者之间则是Chiral型。
按照这一思路,我们在C4D中先创建出蜂窝状的克隆平面,然后在平面上框选出不同大小的矩形,最后卷曲360°即可得到碳纳米管。随着矩形和六边形蜂窝平面之间的夹角变化,便可以在不同类型之间切换。
本期视频内容包括用户数据的设置,XPresso标签的添加,Python节点编辑等。为了简化计算量,这里选择将矩形固定,对克隆平面进行旋转。
由于之前我没有系统讲过C4D中的Python基础知识,大家可以先去b站搜索飞舞的团子“关于C4D和Python那些事”基础教程。今天的视频学完了可以用m和n来控制蜂窝平面的旋转,最终得到一个矩形范围内的蜂窝平面。
当然,XPresso编辑是少不了的。这里用到了Python节点,C4D中的Python编辑最大的特点就是经常会用到矢量。毕竟是三维软件,不管是尺寸、位置还是角度、速度,都可以用矢量来表示。所以一些常用的矢量相关的函数可以稍作了解,比如c4d.Vector()、VectorAngle()、GetLength()等。熟能生巧,写得多了,自然而然就有经验了。
import c4d
from c4d.utils import VectorAngle
from math import *
def main():
global pos0,pos1,pos2,pos3,theta
global nw,nh
a1 = c4d.Vector(0,sqrt(3)*0.5*a,1.5*a)
a2 = c4d.Vector(0,-sqrt(3)*0.5*a,1.5*a)
v1 = n*a1+m*a2
v2 = c4d.Vector(0,0,1)
theta = VectorAngle(v1,v2)
# spline vertex position
pos
0 = c4d.Vector(0,0,-v1.GetLength()*0.5+a/2)
pos1 = c4d.Vector(0,0,v1.GetLength()*0.5+a/2)
pos2 = c4d.Vector(0,l*a,v1.GetLength()*0.5+a/2)
pos3 = c4d.Vector(0,l*a,-v1.GetLength()*0.5+a/2)
# clone parameters
w = (pos3.y*tan(theta)-pos0.z)*cos(theta)
nw = int(2*w/a)
h = pos2.y/cos(theta)+(pos1.z-pos2.y*tan(theta))*sin(theta)
nh = int(3*h/a)
以下是本期的详细视频——
可能对大多数人来说,这个教程的难度偏大。但人生在世,不挑战下自己岂不是白来一遭。下一期视频会继续讲解扭曲变形器的设置,m和n之间数值关系和限制的设置(n ≥ m),如何让碳纳米管底部圆周的中心始终位于原点处等。觉得有用就点个“在看”吧~
本期教程到此结束,感谢收看!
更多精彩内容等你来学👇
【往期教程推荐】
碳布模型还能这么玩
一个百变的切口球壳
打造一根如意碳纳米管
Diamond系列教程
思斐迩(Sphere)——沟通科学与艺术的桥梁
我们的设计队伍是一支专业的硕博团队,具有深厚的科研底蕴,致力于为广大科研工作者提供最周到的科研图像设计服务。客户遍布全球,包括MIT、Stanford、Cornell、中科院、清华、北大等高校和科研机构,蜚声海内外。作品被CNS、JACS、Chem等期刊选作封面,并受邀为其制作科普动画。更有国内最大的科研作图教学公众号“3D科研绘图”,曾为浙江大学、复旦大学、武汉大学、中科院大连化物所等单位提供专业作图讲座和培训,线上线下总受众数超十万人。