关键字Arg Python之后是非关键字Arg

2024-05-08 22:47:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经仔细检查过了。每句话似乎都有道理。我抓狂了,我整个下午都在忙这个。你能帮我弄清楚发生了什么事吗?你知道吗

提前感谢:)

# Program to create 64 cubes for an animation suite, named blender.

import bpy
#make 64 of the following thing.

for i in range (0,64):

   # Step 1 - make a plane, move along a bit ready for the next one.

    # Make a plane.
    bpy.ops.mesh.primitive_plane_add(location = (i+(i*0.5)),(0,0))
    # Move the cursor to the active object.
    bpy.context.scene.cursor_location = bpy.context.active_object.location
    # Move the cursor along y, minus 1 space. 
    bpy.context.scene.cursor_location.y -= 1
    # Set the object origin to the cursor. (What?)
    bpy.ops.object.origin_set(type='ORIGIN_CURSOR')

   # Step 2 - Size the plane how you want.

    # Scale the new plane you made.
    bpy.context.active_object.scale.x = 0.5
    bpy.context.active_object.scale.y = 20
    # Do a transformation, only use scale.
    bpy.ops.object.transform_apply(location=False, rotation=False, scale=True)

   # Step 3 - Add 2 keyframes for an F curve. (Function Curve)

    #
    bpy.ops.anim.keyframe_insert_menu(type='Scaling')
    #initialise 2 types of scaling. 0 is x, 2 is z(?) 1 is y. y is used at the end.
    bpy.context.active_object.animation_data.action.fcurves[0].lock = True
    bpy.context.active_object.animation_data.action.fcurves[2].lock = True

    #Opens Graph Editor
    bpy.context.area.type = 'GRAPH_EDITOR'



    #sets how the block reacts by giving numbers to those keyframes.

    #l or LOW is the highest frequency the block reacts to.
    l = i**2 + 20

    #h or HIGH is the highest frequency a block reacts to.
    #add one to 1, incrementing it
    h = (i+1)**2 + 20

    #puts strings into the console.
    print (str(i) + str(l) + str(h))

    #Render. or "Bake" as we are calling it here. Feed the song into the oven, too! nom.
    #Also, set the low and high settings of the sound bake program to l and h.

    bpy.ops.graph.sound_bake(filepath=r'~/PlayMax/Blender/sawwipe.mp3', low = (l), high = (h))

    # Initialise the y axis [1]
    bpy.context.active_object.animation_data.action.fcurves[1].lock = True

    # That's it! All ready to repeat 63 more times.

Tags: thetotrueforobjectiscontextlocation
1条回答
网友
1楼 · 发布于 2024-05-08 22:47:43

在代码上加上修饰看起来有问题的行如下所示:

bpy.ops.mesh.primitive_plane_add(location = (i+(i*0.5)),(0,0))

发送参数时,关键字参数应该在关键字未指定的参数之后。所以在(0,0)之后设置location=...。你知道吗

另外,看看*args and **kwargs? 可能有用:

相关问题 更多 >