社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

当Python遇到C4D(下)

3D科研绘图 • 4 年前 • 637 次点击  

大家好,我是独孤嘌呤。


今天接着讲螺旋参数化的碳纳米管,废话不多说,直接上视频(点击推文底部的“阅读原文”或者b站搜索“独孤嘌呤”亦可观看)——


有了这个工程文件之后,以后创建各种CNT就是分分钟,哦不,就是秒秒钟的事了。推文中我会给出文件下载链接,毕竟我辛苦折腾几个晚上,还不是为了让你们以后作图更快乐更轻松。


如果愿意自己跟着做一遍,下面是我写的python代码,仅供参考:

👈可向左滑动

import c4d
from c4d.utils import VectorAngle
from math import *

def main():
    global pos0,pos1,pos2,pos3,theta
    global nw,nh,bend_size,bend_pos,clone_pos
    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)
    d = v1.GetLength()
    v = -c4d.Vector(0.5*d/pi,0,0.5*d)

    # spline vertex position
    pos0 = c4d.Vector(0,a/3,-d*0.5)+v
    pos1 = c4d.Vector(0,a/3,d*0.5)+v
    pos2 = c4d.Vector(0,l*a+a/3,d*0.5)+v
    pos3 = c4d.Vector(0,l*a+a/3,-d*0.5)+v

    # 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(4*h/a)
    clone_pos = v

    # bend parameters
    bend_size = c4d.Vector(0,d,l*a)
    bend_pos = 0.5*(pos0+pos2)


另外为了确保n≥mn+m≥3,在CNT参数前还添加了另一个python节点,来控制m和n的关系。


该节点的输出端就是m和n的值,代码如下:

import c4d

def main():
    global m,n
    CNT = doc.GetActiveObject()
    m = CNT[c4d.ID_USERDATA,2]
    n = CNT[c4d.ID_USERDATA,3]
    if n 3-m,m):
        n = max(3-m,m)


其中,ID_USERDATA的编号要根据自己设置的参数来设置,最简单的办法是直接将参数拖到python编辑器中。简单的几行代码就可以建立输入参数到python节点的反馈修正机制。


当然,本教程对大多数人来说是超纲的。实在学不来的话,也可以通过如下链接下载工程文件,感受一下参数化控制碳纳米管的乐趣。

链接:https://pan.baidu.com/s/1wPqlKnhYs65xDpzNV3g69g
提取码:k4pw


教程方法不一定是最优的,代码也还有待改进的地方,大家在弄懂的前提下可以自行优化。另外,由于这是一个参数化控制的模型,普通的移动、旋转、缩放等操作可能会带来意想不到的问题。可以选择C掉(转为可编辑对象)之后再进行其他操作。


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


更多精彩内容等你来学👇

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

Diamond系列教程


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

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