BlenderCN论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2196|回复: 2

blender插件脚本分析(Gear生成) 完结

[复制链接]
发表于 2011-7-15 09:51:12 | 显示全部楼层 |阅读模式
本帖最后由 friendmine 于 2011-7-15 09:52 编辑

1.算法的基本思路
由给定的几个参数来计算出每个齿的顶点,然后把这些顶点连成边, 连成面。
要注意的是:
每顶点是个triple(x,y,z)。
每个边要2个顶点。
每个面要3个或是4个顶点。

2.基本参数:
齿轮是由下面这个函数生成的。
add_gear(teethNum, radius, Ad, De, base, p_angle,
    width=1, skew=0, conangle=0, rack=0, crown=0.0)
参数含义如下:
teethNum: 齿的个数。
radius:半径
Ad: 齿冠的高度
De: 齿根的高度
base: 内径
p_angle:齿冠的压力角,形成齿冠的两侧梯形
width: 齿轮的厚度
skew:  齿轮的齿是否是有偏角的,及偏角的大小
rack: 不清楚
crown: 齿是否要突出齿轮。
        o        (1.) 齿轮的圆心
                      1-2为齿轮的内径
  *---*---*---*    (2.) verts_inner_base
  |     |     |    |          此部分长度为 radius-base-dedendum
  *---*---*---*    (3.) verts_outer_base
   |    |     |         4-3为齿轮的齿根, dedendum, 4-1之间为半径, radius
    *---*---*    (4.) verts_middle_tooth
     \  |  /          5-4为齿轮的齿冠, addendum
      *-*-*        (5.) verts_tip_tooth
3.算法
实际上只要算出上面图中的每个齿的(2), (3), (4), (5)处的顶点就可以得出所有的顶点。
随后将这些顶点连成边,面就成形成我们的mesh物体了。
而算出每个顶点的算法还是比较简单的。
x = 半径*cos(a)
y = 半径*sin(a)
z = 厚度

4.调用blender的内置python api来生成物体。
    # Create new mesh
    mesh = bpy.data.meshes.new(name)
    # Make a mesh from a list of verts/edges/faces.
    mesh.from_pydata(verts, edges, faces)
    # Update mesh geometry after adding stuff.
    mesh.update()
    import add_object_utils
    return add_object_utils.object_data_add(context, mesh, operator=None)
发表于 2011-8-3 10:57:35 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2011-8-13 10:16:48 | 显示全部楼层
谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Blender最新中文教学视频|Blender头条|小黑屋|手机版|Archiver|Blender中国 ( 蜀ICP备17002929号 )360网站安全检测平台

GMT+8, 2019-12-6 08:52 , Processed in 0.017720 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表