show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次我们制作了
- 渐变颜色的球
- 随机颜色的球
- 一个人
- 可以控制摄像机
- 从不同角度拍摄他吗?
- 新建 工程
- 场景 恢复到初始状态
- 总共三个东西
- 立方体
- 摄影机
- 灯
- 摄影机中 的画面什么样子?
- 在View中
- 选择Camera
- 选择 Active Camera
- 从 活动摄影机
- Active Camera
- 的 视角 观察
- 切换到 脚本工作区
- 脚本工作区的 3d视图
- 同样需要 调整
- 在3d视图 View中
- 选择Camera
- 选择 Active Camera
- 在 3d视图中
- 显示出 摄像机 拍摄出的内容
- 大纲视图选中摄影机
- 拖动到python窗口
- 修改摄影机位置
bpy.context.object.location[0] += 0.1
- 每次对于摄影机的横坐标进行修改
- 并且 location[0] 属性也进行修改
- 从3d视图中发现
- 物体没动
- 镜头动了
- 镜头 的 location.x
- 确实在不断调整
- 同理可以修改
- location的其他两个分量
- 光标放到旋转属性上
- 横向移动
- 观察信息条板
- 数值修改
bpy.context.object.rotation_euler[0] -= 0.05
- 每次对于摄影机的旋转进行修改
- 俯仰轴
- 横滚轴
- 航向轴
- 摄影机的焦段可以调整吗?
- 选中摄像机
- 选中摄像机调板
- 将 50定焦头
- 改成 70mm 焦距
- 体会 镜头推动的 感觉
- 也可以通过 脚本进行修改
bpy.data.cameras["Camera"].lens += 5
- 把上次的角色
- 放到摄影机里吧!
import bpy
bpy.ops.object.select_all(action="SELECT") # 选择所有物体
bpy.ops.object.delete() # 删除选定的物体
bpy.ops.mesh.primitive_uv_sphere_add()
head = bpy.context.object
bpy.context.object.name = "head"
r_eye = bpy.ops.mesh.primitive_uv_sphere_add()
bpy.context.object.name = "r_eye"
bpy.context.object.location = (0.7, 0.5, 0.3)
bpy.context.object.scale = (0.3, 0.3, 0.3)
mat = bpy.data.materials.new('mat_eye')
color = (0, 0, 0, 1)
mat.diffuse_color = color
bpy.context.object.data.materials.append(mat)
bpy.context.object.parent = head
l_eye = bpy.ops.mesh.primitive_uv_sphere_add()
bpy.context.object.name = "l_eye"
bpy.context.object.location = (0.7, -0.5, 0.3)
bpy.context.object.scale = (0.3, 0.3, 0.3)
bpy.context.object.data.materials.append(mat)
bpy.context.object.parent = head
bpy.ops.mesh.primitive_cone_add()
body = bpy.context.object
body.name = "body"
body.location = (0,0,-1)
body.scale = (1,1,2)
character = bpy.data.objects.new("character", None)
bpy.data.collections["Collection"].objects.link(character)
head.parent = character
body.parent = character
- 再此基础上
- 添加 并设置 摄影机
import bpy
bpy.ops.object.select_all(action="SELECT") # 选择所有物体
bpy.ops.object.delete() # 删除选定的物体
bpy.ops.mesh.primitive_uv_sphere_add()
head = bpy.context.object
bpy.context.object.name = "head"
r_eye = bpy.ops.mesh.primitive_uv_sphere_add()
bpy.context.object.name = "r_eye"
bpy.context.object.location = (0.7, 0.5, 0.3)
bpy.context.object.scale = (0.3, 0.3, 0.3)
mat = bpy.data.materials.new('mat_eye')
color = (0, 0, 0, 1)
mat.diffuse_color = color
bpy.context.object.data.materials.append(mat)
bpy.context.object.parent = head
l_eye = bpy.ops.mesh.primitive_uv_sphere_add()
bpy.context.object.name = "l_eye"
bpy.context.object.location = (0.7, -0.5, 0.3)
bpy.context.object.scale = (0.3, 0.3, 0.3)
bpy.context.object.data.materials.append(mat)
bpy.context.object.parent = head
bpy.ops.mesh.primitive_cone_add()
body = bpy.context.object
body.name = "body"
body.location = (0,0,-1)
body.scale = (1,1,2)
character = bpy.data.objects.new("character", None)
bpy.data.collections["Collection"].objects.link(character)
head.parent = character
body.parent = character
camera = bpy.data.cameras.new('MyCamera')
camera_obj = bpy.data.objects.new('CameraObj', camera)
bpy.context.scene.collection.objects.link(camera_obj)
camera.lens = 50 # Focal length in millimeters
camera.sensor_width = 36 # Sensor width in millimeters
camera.sensor_height = 24 # Sensor height in millimeters
camera_obj.location = (0, -5, 2) # X, Y, Z coordinates
camera_obj.rotation_euler = (0, 0, 0)
- 确实出现了 摄影机
- 但是 位置 和 朝向 不理想
- 选中 新建的 摄影机对象
- 设置为活跃摄影机
- Active Camera
- View - Frame All
- 调整当前视图
- 调整 当前视角
- 使之 能够合适地 拍摄到
- 晴天娃娃
- View - Align View - Align Active Camara To View
- 将 当前 视图 调整为摄影机 的位置
- 得到 当前视角
- 所需要摄影机的
- 坐标和旋转
import bpy
bpy.ops.object.select_all(action="SELECT") # 选择所有物体
bpy.ops.object.delete() # 删除选定的物体
bpy.ops.mesh.primitive_uv_sphere_add()
head = bpy.context.object
bpy.context.object.name = "head"
r_eye = bpy.ops.mesh.primitive_uv_sphere_add()
bpy.context.object.name = "r_eye"
bpy.context.object.location = (0.7, 0.5, 0.3)
bpy.context.object.scale = (0.3, 0.3, 0.3)
mat = bpy.data.materials.new('mat_eye')
color = (0, 0, 0, 1)
mat.diffuse_color = color
bpy.context.object.data.materials.append(mat)
bpy.context.object.parent = head
l_eye = bpy.ops.mesh.primitive_uv_sphere_add()
bpy.context.object.name = "l_eye"
bpy.context.object.location = (0.7, -0.5, 0.3)
bpy.context.object.scale = (0.3, 0.3, 0.3)
bpy.context.object.data.materials.append(mat)
bpy.context.object.parent = head
bpy.ops.mesh.primitive_cone_add()
body = bpy.context.object
body.name = "body"
body.location = (0,0,-1)
body.scale = (1,1,2)
character = bpy.data.objects.new("character", None)
bpy.data.collections["Collection"].objects.link(character)
head.parent = character
body.parent = character
camera = bpy.data.cameras.new('MyCamera')
camera_obj = bpy.data.objects.new('CameraObj', camera)
bpy.context.scene.collection.objects.link(camera_obj)
camera.lens = 50 # Focal length in millimeters
camera.sensor_width = 36 # Sensor width in millimeters
camera.sensor_height = 24 # Sensor height in millimeters
camera_obj.location = (13.6, 5, 10.5) # X, Y, Z coordinates
camera_obj.rotation_euler = (-128*0.0174444444,180*0.0174444444,-60*0.0174444444)
- 注意 rotation的值
- 需要从 角度值
- 转化为 弧度值
- 这下被摄对象 和 摄影机
- 全都就位了
- 这次我们完成了摄影机的控制
- 控制位置
- 控制旋转角度
- 如何将 摄影机拍到的东西
- 渲染成图片呢?
- 我们下次再说!👋