blender底部对齐

目录

效果图:

1.判断轴向:

[2. 切平:](#2. 切平:)


效果图:

1.判断轴向:

bash 复制代码
exec(open(r"E:\project\bpy_pro\zhou.py").read())
python 复制代码
import bpy
obj = bpy.context.active_object
verts = obj.data.vertices

x_vals = [v.co.x for v in verts]
y_vals = [v.co.y for v in verts]
z_vals = [v.co.z for v in verts]

print(f"X轴范围: {min(x_vals):.2f} ~ {max(x_vals):.2f}  高度差: {max(x_vals)-min(x_vals):.2f}")
print(f"Y轴范围: {min(y_vals):.2f} ~ {max(y_vals):.2f}  高度差: {max(y_vals)-min(y_vals):.2f}")
print(f"Z轴范围: {min(z_vals):.2f} ~ {max(z_vals):.2f}  高度差: {max(z_vals)-min(z_vals):.2f}")

2. 切平:

执行脚本:

python 复制代码
exec(open(r"E:\project\bpy_pro\qie_ping.py").read())

E:\project\bpy_pro\qie_ping.py

python 复制代码
import bpy


def flatten_bottom_vertices(axis='Y', z_target=0, threshold=0.01):
    """
    将物体底部的顶点压平

    参数:
        axis: 高度轴,可选 'X', 'Y', 'Z'
        z_target: 目标高度值
        threshold: 容差
    """
    obj = bpy.context.active_object
    if obj is None or obj.type != 'MESH':
        print("请先选中一个网格物体")
        return

    bpy.ops.object.mode_set(mode='OBJECT')
    mesh = obj.data

    # 根据选择的轴获取坐标值
    axis_idx = {'X': 0, 'Y': 1, 'Z': 2}[axis]

    # 找出该轴的最小值
    coords = [v.co[axis_idx] for v in mesh.vertices]
    lowest = min(coords)

    print(f"沿 {axis} 轴,最低点: {lowest:.4f}")

    # 选择底部顶点(距离最低点小于阈值的顶点)
    selected_verts = []
    for v in mesh.vertices:
        if abs(v.co[axis_idx] - lowest) < threshold:
            selected_verts.append(v)

    print(f"找到 {len(selected_verts)} 个底部顶点")

    if not selected_verts:
        print("未找到底部顶点,请尝试增大threshold")
        return

    # 直接修改坐标
    for v in selected_verts:
        co = list(v.co)
        co[axis_idx] = z_target
        v.co = co
    mesh.update()

    print(f"已将 {len(selected_verts)} 个顶点压平到 {axis}={z_target}")


# ===== 使用Y轴,压平到Y=0 =====
flatten_bottom_vertices(axis='Y', z_target=0, threshold=0.05)
相关推荐
江畔柳前堤2 分钟前
Function Calling 与 Tool Calling:从认知到工程的全景深度解析
开发语言·网络·人工智能·深度学习·算法·机器学习·php
2601_949950638 分钟前
Java 面试准备,用练题簿把“背过八股”变成“真正会答”
java·开发语言·面试·刷题·小程序推荐
努力的小Qin14 分钟前
梯度下降如何实现参数优化:从线性回归到 Sigmoid 分类
人工智能·python·神经网络
老洋葱Mr_Onion18 分钟前
【C++】信息学奥赛CSP通关之路——CSP-J/S第一轮原创全真模拟试卷集(2026)卷四全卷解析
开发语言·c++
zander25828 分钟前
LeetCode 739:每日温度——为什么单调栈要持续弹出
开发语言·python·算法
無限進步D34 分钟前
Java 函数式编程(Lambda)
java·开发语言
xzlAwin1 小时前
Win10安装Go语言多版本管理器g工具
开发语言·golang
for_ever_love__1 小时前
python基础语法学习: 文件操作
python·学习
(initial)1 小时前
C-05. Kernel Fusion 代价边界:少写回 vs 寄存器压力与 occupancy
c语言·开发语言·cuda
青春不败 177-3266-05201 小时前
基于R、Python的Copula变量相关性分析及AI大模型应用
人工智能·python·r语言·贝叶斯·统计学·copula