Python社区  »  Python

当Python遇到C4D(上)

3D科研绘图 • 4 月前 • 99 次点击  

大家好,我是独孤嘌呤。


今天的视频时间有点长,将近一个小时,而且还只是上半段。内容是教大家用C4D做一个可以用螺旋指数(chirality index)m和n来控制的碳纳米管。


何为碳纳米管的螺旋指数?我们可以通过下图得到答案。图中有两个基本向量a1a2,分别乘以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),如何让碳纳米管底部圆周的中心始终位于原点处等。觉得有用就点个“在看”吧~


本期教程到此结束,感谢收看!


更多精彩内容等你来学👇

【往期教程推荐】

碳布模型还能这么玩

一个百变的切口球壳

打造一根如意碳纳米管


【专辑推荐】
C4D科研绘图系列教程
3D科研绘图往期教程精选
C4D科研模型100例

Diamond系列教程


思斐迩(Sphere)——沟通科学与艺术的桥梁

我们的设计队伍是一支专业的硕博团队,具有深厚的科研底蕴,致力于为广大科研工作者提供最周到的科研图像设计服务。客户遍布全球,包括MIT、Stanford、Cornell、中科院、清华、北大等高校和科研机构,蜚声海内外。作品被CNS、JACS、Chem等期刊选作封面,并受邀为其制作科普动画。更有国内最大的科研作图教学公众号“3D科研绘图”,曾为浙江大学、复旦大学、武汉大学、中科院大连化物所等单位提供专业作图讲座和培训,线上线下总受众数超十万人。
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/71312
 
99 次点击  
分享到微博