Maya Python:如何让立方体落在有隆起和凹坑的平面上,使立方体的底部贴合曲面的倾斜角度

问题描述 投票:0回答:1

我想要的结果

如何使用PythonScript在Maya2022中制作这个。

我尝试使用光线投射来使用

OpenMaya.MFnMesh.closestIntersection()
获取立方体下方的点,以便将立方体落到该点的位置。

但是编辑器只是在这行代码中给出了一个运行时错误

hit, _, hit_point, _ = mesh_fn.closestIntersection(ray_source, ray_direction, OpenMaya.MSpace.kWorld, 100, False)
,没有任何额外的信息。 这是我的总共代码

import maya.cmds as cmds
import maya.api.OpenMaya as OpenMaya

def ray_intersects_object(ray_start, ray_direction, object_name):
    selection_list = OpenMaya.MSelectionList()
    selection_list.add(object_name)
    dag_path = selection_list.getDagPath(0)
    mesh_fn = OpenMaya.MFnMesh(dag_path)
    # ray_source = OpenMaya.MFloatPoint(ray_start[0], ray_start[1], ray_start[2])
    ray_source = OpenMaya.MFloatPoint(0., 0., 0.)
    ray_direction = OpenMaya.MFloatVector(ray_direction[0], ray_direction[1], ray_direction[2])
    v = OpenMaya.MFloatVector(0.,1.,0.)
    hit_point = OpenMaya.MFloatPoint()
    hit, _, hit_point, _ = mesh_fn.closestIntersection(ray_source, ray_direction, OpenMaya.MSpace.kWorld, 100, False)
    if hit:
        return True, [hit_point.x, hit_point.y, hit_point.z]
    else:
        return False, None
start_point = (0, 10, 0)
direction = (0, 1, 0)
object_to_check = 'ground'  # Replace with the name of your object in Maya
ray_intersects_object(start_point, direction, object_to_check)
python maya
1个回答
0
投票

如果我执行你的代码,我会清楚地看到问题:

# Error: ValueError: file <maya console> line 14: too many values to unpack (expected 4)

如果我检查这一行,我可以看到

closestIntersection()
方法的结果返回一个包含 6 个值的集合:
(maya.api.OpenMaya.MFloatPoint(0, 0, 0, 1), -0.0, 44, 1, 0.0, 0.0)
,而您只解压 4 个值。修复此问题,您的代码应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.