Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 4 column 1
---
show : step
version : 1.0
enable_checker : true
本教程同步发布在:
个人网站: `https://oeasy.org`
蓝桥云课: `https://www.lanqiao.cn/courses/3584`
GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
Gitee: `https://gitee.com/overmind1980/oeasypython`
---
oeasy Python 0680
这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
阶梯_排队与布阵_Location_位置信息_立方体_xyz_移动_位移
配套视频
上次使用脚本工作区中的文本面板
这面板可以编写python程序
还可以保存、导出
这样就可以将程序保留下来了
import bpy
bpy .ops .object .select_all (action = "SELECT" )
bpy .ops .object .delete ()
for num in range (13 ):
bpy .ops .mesh .primitive_cube_add (size = 1 )
bpy .context .object .location = (0 ,num ,0 )
bpy .context .object .scale = (30 ,1 ,num + 1 )
import bpy
bpy .ops .object .select_all (action = "SELECT" )
bpy .ops .object .delete ()
for num in range (13 ):
bpy .ops .mesh .primitive_cube_add (size = 1 )
bpy .context .object .location = (0 , num , num / 2 )
bpy .context .object .scale = (30 , 1 , num + 1 )
在View视图菜单
点中Frame All
取景框
显示全部对象的全景
键鼠配合
操作
效果
鼠标中键
滚动
镜头推拉
鼠标中键
按住拖动
镜头旋转
shift + 鼠标中键
点击拖动
镜头平移
import bpy
import random
bpy .ops .object .select_all (action = "SELECT" )
bpy .ops .object .delete ()
for num in range (10 ):
r = random .random ()
bpy .ops .mesh .primitive_cube_add (size = 1 )
bpy .context .object .location = (r ,num ,0 )
import bpy
import random
bpy .ops .object .select_all (action = "SELECT" )
bpy .ops .object .delete ()
for x in range (10 ):
for y in range (10 ):
r = random .random ()
bpy .ops .mesh .primitive_cube_add (size = 1 ,location = (x ,y ,r ))
import bpy
import random
bpy .ops .object .select_all (action = "SELECT" )
bpy .ops .object .delete ()
for x in range (3 ):
for y in range (3 ):
for z in range (3 ):
bpy .ops .mesh .primitive_cube_add (size = 1 ,location = (x ,y ,z ))
import bpy
import random
bpy .ops .object .select_all (action = "SELECT" )
bpy .ops .object .delete ()
for x in range (3 ):
for y in range (3 ):
for z in range (3 ):
bpy .ops .mesh .primitive_cube_add (size = 1 ,location = (x , y ,z ))
import bpy
import random
bpy .ops .object .select_all (action = "SELECT" )
bpy .ops .object .delete ()
for x in range (3 ):
for y in range (3 ):
for z in range (3 ):
bpy .ops .mesh .primitive_cube_add (size = 1 ,location = (x * 2 , y * 2 ,z * 2 ))
import bpy
from math import pi ,cos ,sin
bpy .ops .object .select_all (action = "SELECT" )
bpy .ops .object .delete ()
num = 10
for i in range (num ):
theta = i * pi * 2 / num
pos = (2 * cos (theta ), 2 * sin (theta ), 0 )
bpy .ops .mesh .primitive_cube_add (size = 0.6 ,location = pos )
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 )
import bpy
from math import pi ,cos ,sin
bpy .ops .object .select_all (action = "SELECT" )
bpy .ops .object .delete ()
num = 36
for i in range (num ):
theta = i * pi * 2 / num
pos = (2 * cos (theta ), 2 * sin (theta ), 0 )
bpy .ops .mesh .primitive_cube_add (size = 0.3 ,location = pos )
import bpy
from math import pi ,cos ,sin
bpy .ops .object .select_all (action = "SELECT" )
bpy .ops .object .delete ()
num = 36
for i in range (num ):
theta = i * pi * 2 / num
pos = (2 * cos (theta ), 2 * sin (theta ), 0 )
bpy .ops .mesh .primitive_cube_add (size = 0.3 ,location = pos )
num = 108
for i in range (num ):
theta = i * pi * 2 / num
pos = (4 * cos (theta ), 4 * sin (theta ), 0 )
bpy .ops .mesh .primitive_cube_add (size = 0.1 ,location = pos )
import bpy
from math import pi ,cos ,sin
bpy .ops .object .select_all (action = "SELECT" )
bpy .ops .object .delete ()
num = 720
for i in range (num ):
theta = i * pi * 4 / num
i_radius = 0 + i * 0.1
pos = (i_radius * cos (theta ), i_radius * sin (theta ), 0.15 * i )
bpy .ops .mesh .primitive_cube_add (size = 0.01 * i , location = pos )
import bpy
import math
from mathutils import Vector
# 清空场景
def clear_scene ():
bpy .ops .object .select_all (action = 'SELECT' )
bpy .ops .object .delete ()
# 生成螺旋塔
def create_spiral_tower (
layers = 10 , # 层数
radius = 3 , # 底部半径
height = 0.5 , # 每层高度
twist = 15 # 旋转角度(度)
):
for i in range (layers ):
# 将角度转换为弧度
angle = math .radians (i * twist )
# 计算当前层位置(极坐标转笛卡尔坐标)
x = radius * math .cos (angle )
y = radius * math .sin (angle )
z = i * height
# 创建立方体层
bpy .ops .mesh .primitive_cube_add (
size = 2 ,
location = (x , y , z )
)
# 缩小半径实现螺旋收缩效果
radius *= 0.9
# 添加旋转动画(可选)
bpy .context .object .rotation_euler .z = angle
bpy .context .object .scale .z = 0.2
# 主程序
if __name__ == "__main__" :
clear_scene ()
create_spiral_tower (layers = 15 , radius = 4 , twist = 20 )
这次控制了视角的变化
以 所有对象 为全景 Frame All
以 所选对象 为全景 Frame Selected
还可以 手动改变
键鼠配合
操作
效果
鼠标中键
滚动
镜头推拉
鼠标中键
按住拖动
镜头旋转
shift + 鼠标中键
点击拖动
镜头平移
后面加入了随机的因素
最后做了
如何理解角度??🤔
我们下次再说!👋
配套视频
本文来自 oeasy Python 系统教程。
想完整、扎实学 Python,
搜索 oeasy 即可。