【Blender Python】2.结合Kimi生成

news/2024/10/8 8:49:12/

概述

结合Kimi这样的AI工具可以生成Blender Python代码,用来辅助生成一些或简单或复杂的图形。当然,出不出错这就不一定了。因为AI所训练的版本可能并不是Blender的最新版本,类似的问题也出现在Godot上。

测试

在kimi中提问,获取一个心形网格的Blender Python代码:

复制生成的代码:

python">import bpy
import math# 创建一个新的心形网格
def create_heart_mesh():# 创建一个新的网格对象mesh = bpy.data.meshes.new(name="HeartMesh")obj = bpy.data.objects.new("Heart", mesh)# 连接到场景bpy.context.collection.objects.link(obj)bpy.context.view_layer.objects.active = objobj.select_set(True)bpy.context.view_layer.objects.active = obj# 清除现有的网格数据mesh.from_pydata([], [], [])# 设置心形的参数segments = 64points = []for i in range(segments + 1):theta = i * (math.pi / segments)x = 16 * math.pow(math.sin(theta), 3)y = -(13 * math.cos(theta) - 5 * math.cos(2 * theta) - 2 * math.cos(3 * theta) - math.cos(4 * theta))z = 0points.append((x, y, z))# 创建顶点mesh.from_pydata([(p[0], p[1], p[2]) for p in points], [], [])# 更新网格mesh.update()return obj# 调用函数创建心形
heart_obj = create_heart_mesh()# 可以调整位置和缩放
heart_obj.location.x = 0
heart_obj.location.y = 0
heart_obj.location.z = 0
heart_obj.scale.x = 1
heart_obj.scale.y = 1
heart_obj.scale.z = 1

粘贴运行后得到的结果:

当然这不代表什么,也许是我的AI提问不够精确。

重新提问后,获得如下代码:

python">import bpy
import math# 清除当前场景中的所有物体
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()# 创建一个新的心形曲线
curve_data = bpy.data.curves.new('HeartCurve', type='CURVE')
curve_data.dimensions = '3D'# 添加一个新点到曲线中
polyline = curve_data.splines.new('NURBS').points# 定义心形曲线的参数方程
def heart_shape(t, scale=1.0):x = scale * (16 * math.sin(t) ** 3)y = scale * (13 * math.cos(t) - 5 * math.cos(2*t) - 2 * math.cos(3*t) - math.cos(4*t))z = 0return x, y, z# 生成心形曲线的点
for i in range(200):t = i * (math.pi * 2 / 200)x, y, z = heart_shape(t)polyline.add(1)polyline[-1].co = (x, y, z, 1)# 创建一个新的网格物体
obj = bpy.data.objects.new('HeartMesh', curve_data)# 将曲线转换为网格
bpy.context.scene.collection.objects.link(obj)
bpy.context.view_layer.objects.active = obj
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.curve.make_mesh(preserve_nurbs=True, keep_vertex_order=True)
bpy.ops.object.mode_set(mode='OBJECT')# 更新场景,以便可以看到新创建的物体
bpy.context.view_layer.update()

执行后有报错,但好歹已经添加了一个完整的心形。

总结

就像上面所说的,这可能与Blender的版本有关系,我使用的是4.2.2 LTS版本。而Kimi训练的版本可能是之前的。API的差异导致出现一些错误,当然也不能排除AI出现“智障”的情形。

AI在学习中也只能作为辅助,如果要实际的掌握了理解Blender Python,还是需要静心学习其细节。


http://www.ppmy.cn/news/1536042.html

相关文章

Linux 性能优化之CPU 多级缓存

写在前面 博文内容为 Linux CPU 多级缓存认知内容涉及: 什么是CPU多级缓存认知,CPU 硬件缓存信息,缓存流程写入策略,映射算法认知CPU 缓存分析,使用 valgring 和 Perf 分析CPU 缓存命中情况编码方面 CPU 缓存优化&…

ubuntu的useradd和adduser命令

useradd vs adduser 1. useradd 类型:Linux 命令。功能:用于创建新用户,但不会自动创建用户的主目录和密码。参数: -c:添加备注。-d:指定用户主目录。-e:设置用户有效期。-f:设置密…

18 Shell Script sort和uniq命令

sort和uniq命令 一、sort命令的使用 ​ sort 命令是帮我们依据不同的数据类型进行排序,并将结果写到标准输出。如果File 参数指定多个文件,那么sort 命令将这些文件连接起来,并当作一个文件进行排序 ​ 选项与参数 ​ –f :忽…

线性代数入门

线性代数入门 线性代数(Linear Algebra)是数学的重要分支之一,广泛应用于工程、计算机科学、物理学、经济学等领域。它主要研究向量、矩阵及其在空间中的变换。对于程序员来说,掌握线性代数的基础知识能够帮助更好地理解数据处理…

[C++] 小游戏 征伐 SLG DNF 0.0.2 版本 zty出品

目录 大家好~ 今天zty带来的是 War and Expedition SLG DNF 0.0.2 version 讲人话就是 War and Expedition (游戏名,即征伐) SLG (即时战略类游戏) DNF (Did Not Finish) 0.0.2 &#xff…

【动态规划-最长公共子序列(LCS)】力扣97. 交错字符串

给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串&#xff1a; s s1 s2 … sn t t1 t2 … tm |n - m| < 1 交错 是 s1…

微信步数C++

题目&#xff1a; 样例解释&#xff1a; 【样例 #1 解释】 从 (1,1) 出发将走 2 步&#xff0c;从 (1,2) 出发将走 4 步&#xff0c;从 (1,3) 出发将走 4 步。 从 (2,1) 出发将走 2 步&#xff0c;从 (2,2) 出发将走 3 步&#xff0c;从 (2,3) 出发将走 3 步。 从 (3,1) 出发将…

LeetCode-LCR 012. 寻找数组的中心下标【双指针】

题目 给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端&#xff0c;那么左侧数之和视为 0 &#xff0c;因为在下标的左侧不存在元素。…