当前位置: 首页 > news >正文

【编程实践】利用python在Blender生成三维模型

在这里插入图片描述

import bpy
import bmeshdef create_material(name, color, image_path=None):mat = bpy.data.materials.new(name=name)mat.use_nodes = Truebsdf = mat.node_tree.nodes.get("Principled BSDF")if image_path:# 贴图模式tex_image = mat.node_tree.nodes.new("ShaderNodeTexImage")tex_image.image = bpy.data.images.load(image_path)mat.node_tree.links.new(bsdf.inputs['Base Color'], tex_image.outputs['Color'])else:# 纯色bsdf.inputs['Base Color'].default_value = colorreturn matdef create_house():# 删除已有对象bpy.ops.object.select_all(action='SELECT')bpy.ops.object.delete(use_global=False)# 创建房子墙体(立方体)bpy.ops.mesh.primitive_cube_add(size=4, location=(0, 0, 2))wall = bpy.context.active_objectwall.name = "Wall"# 创建屋顶(四棱锥)mesh = bpy.data.meshes.new("Roof_Mesh")roof = bpy.data.objects.new("Roof", mesh)bpy.context.collection.objects.link(roof)bm = bmesh.new()# 底部四角b = 2z_base = 4verts = [bm.verts.new((-b, -b, z_base)),bm.verts.new(( b, -b, z_base)),bm.verts.new(( b,  b, z_base)),bm.verts.new((-b,  b, z_base)),]top = bm.verts.new((0, 0, z_base + 2))  # 屋顶顶点# 创建四个面(屋顶侧面)for i in range(4):bm.faces.new([verts[i], verts[(i + 1) % 4], top])# 底面bm.faces.new(verts)bm.to_mesh(mesh)bm.free()# 材质wall_mat = create_material("Wall_Mat", (0.8, 0.5, 0.3, 1))  # 棕墙roof_mat = create_material("Roof_Mat", (0.2, 0.1, 0.05, 1))  # 深屋顶wall.data.materials.append(wall_mat)roof.data.materials.append(roof_mat)create_house()

相关文章:

  • Stable Diffusion入门-ControlNet 深入理解 第四课:风格迁移与重绘控制模型——让AI也有“艺术天赋”!
  • FPGA设计的上板调试
  • 微信小程序实现简版点赞动画
  • 【linux】文件与目录命令 - iconv
  • Kafka 消费者重平衡问题排查与优化实践
  • 下载最新版本的OpenOCD
  • (LeetCode 每日一题) 2099. 找到和最大的长度为 K 的子序列 (排序)
  • 【C++】transform, reduce, scan是什么意思?理解常用并行算法及其实现原理
  • [Andrej Karpathy_2] vibe coding | 大型语言模型的1960年代 | 自主性滑块
  • 【云桌面容器KasmVNC】如何关闭SSL使用HTTP
  • [Linux]从零开始的STM32MP157移植Ubuntu根文件系统教程
  • Linux软连接和硬连接
  • git 挑选:git cherry-pick
  • DeepSeek改写glaredb的示例实现自定义CLI界面程序
  • c# 比较两个list 之间元素差异
  • (五)神经网络
  • uni-app项目实战笔记26--uniapp实现富文本展示
  • MicroProfile的配置和MicroProfile健康
  • 设备树引入
  • 动态面板axure