show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次研究了location参数的设置
- (1,2,3) 代表着 xyz 三个轴数值
- 分别是(1m,2m,3m)
- 定义了对象的位置
- 除了location参数之外
- primitive_cube_add 函数
- 还有一个 rotation参数
- 这个参数怎么用呢?
- 还是在Code/b1.py中修改代码
import bpy
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
for num in range(13):
bpy.ops.mesh.primitive_monkey_add(size = 1)
bpy.context.object.location = (0,num,0)
- 然后进入blender中
- 在文本调板中
- Relaod
- Run
- 得到一排猴子
- 想让猴子并排站立
import bpy
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
for num in range(13):
bpy.ops.mesh.primitive_monkey_add(size = 1)
bpy.context.object.location = (0,num,0)
bpy.context.object.rotation_euler[0] = 3.14 / 6
- 猴子在红轴方向上旋转60度
- 低头 60度
- 0号旋转轴 为
- 俯仰轴
- pitch
- 负责 低头抬头
- 现在全都低头认错
- 我要他们趾高气扬起来
import bpy
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
for num in range(13):
bpy.ops.mesh.primitive_monkey_add(size = 1)
bpy.context.object.location = (0,num,0)
bpy.context.object.rotation_euler[1] = 3.14 / 6
- 猴子在绿轴方向上 旋转 60度
- 歪头 60度
- 1号旋转轴 为
- 横滚轴
- bank
- 负责 歪头
import bpy
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
for num in range(13):
bpy.ops.mesh.primitive_monkey_add(size = 1)
bpy.context.object.location = (0,num,0)
bpy.context.object.rotation_euler[2] = 3.14 / 6
- 猴子 在垂直于红绿轴平面的 z轴上旋转 60度
- 转头 60度
-
2号坐标轴 为
- 航向轴
- heading
- 负责转头
-
来一面 猴子墙
import bpy
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
for x in range(10):
for z in range(10):
bpy.ops.mesh.primitive_monkey_add(size=1)
bpy.context.object.location=(x,0,z)
- 效果
- 加点随机效果
import bpy
import random
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
for x in range(10):
for z in range(10):
r = random.random()
bpy.ops.mesh.primitive_monkey_add(size=1)
bpy.context.object.location=(x,0,z)
bpy.context.object.rotation_euler[1] = r
- 方向单一
- 尝试修改
import bpy
import random
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
for x in range(10):
for z in range(10):
r = random.random()
bpy.ops.mesh.primitive_monkey_add(size=1)
bpy.context.object.location=(x,0,z)
bpy.context.object.rotation_euler[1] = r-0.5
- 效果
- 清空场景
- 想做个加号+
- shift + a
- 建立一个立方体
- 找到scale x 属性
- 设置为3
import bpy
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
bpy.ops.mesh.primitive_cube_add(size = 1)
bpy.context.object.scale[0] = 3
- 可以看到
- 立方体在x方向
- 缩放为原来三倍
- 现在需要
- 把竖变成横
- 尝试旋转此立方体
- 选中立方体
- shift + 空格 之后 r
- 可以 旋转立方体
- xyz 三个轴的缩放值构成一个列表
- scale[0] 是 x轴
- scale[1] 是 y轴
- scale[2] 是 z轴
- 总共有三个轴向
- 我想沿着绿色的轴向旋转
- 设置 旋转值
- 第二个分量 为90度
import bpy
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
bpy.ops.mesh.primitive_cube_add(size = 1)
bpy.context.object.scale[0] = 3
bpy.context.object.rotation_euler[1] = 1.5708
- 原来旋转就是改变object.rotation_euler
- xyz 三个轴向的旋转值构成一个列表
- rotation_euler[0] 是 x轴
- rotation_euler[1] 是 y轴 设置为 1.5708
- rotation_euler[2] 是 z轴
- 我在下面三个地方操作是等效的
- 3d 视图 旋转
- 属性视图 修改值
- python 视图 写代码
- 这个1.5708怎么来的呢?
- 弧度制 是
- 一种 计算角度的 方法
- 将和半径相等的弧长对应的角度定义为1
- 一周
- 角度制 360°
- 弧度制 2*π ≈ 6.28
- 直角
- 角度制 90°
- 弧度制 π/2 ≈ 1.5708
- 想要在此横的基础上
- 再来一个竖
import bpy
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
bpy.ops.mesh.primitive_cube_add(size = 1)
bpy.context.object.scale[0] = 3
bpy.context.object.rotation_euler[1] = 1.5708
bpy.ops.mesh.primitive_cube_add(size = 1)
bpy.context.object.scale[0] = 3
- 得到结果
- 如果 想做
- 下面这个造型
- 该如何修改代码
import bpy
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
for num in range(3):
bpy.ops.mesh.primitive_cube_add(size = 1)
bpy.context.object.scale[num] = 3
- 效果
import bpy
from math import pi,cos,sin
r = 3
n = 24
for i in range(n):
theta = i * pi * 2/n
pos = (r*cos(theta), r*sin(theta), 0)
bpy.ops.mesh.primitive_cube_add(size=0.6,location=pos,
rotation=(0,0,theta))
- 效果
import bpy
from math import pi,cos,sin
r = 3
n = 24
for i in range(n):
theta = i * pi * 2/n
pos = (r*cos(theta), r*sin(theta), 0)
bpy.ops.mesh.primitive_cube_add(size=0.6,location=pos,rotation=(0,0,theta))
bpy.context.object.scale = (1,0.2,0.2)
import bpy
from math import pi,cos,sin
r = 4
n = 100
for i in range(n):
theta = i * pi * 2/n
pos = (r*cos(theta), r*sin(theta), 0)
bpy.ops.mesh.primitive_cube_add(size=0.6,location=pos,rotation=(0,0,theta))
bpy.context.object.scale = (1,0.2,0.2)
- 结果
-
这次 研究了 旋转函数
- rotation_euler 旋转
-
xyz 三个轴向的旋转值构成一个列表
- rotation_euler[0] 是 x轴
- rotation_euler[1] 是 y轴
- rotation_euler[2] 是 z轴
-
如果一个 造型 做出来了
- 想让他以一个整体的方式 旋转 该怎么办呢?
-
如果我想得到乘号
- 应该如何修改代码呢?
- 我们下次再说!👋