[英]How to change properties of objects in blender with python
我目前在Blender中使用游戲引擎。 我想知道如何通過腳本更改對象的屬性,例如位置,旋轉,顏色以及更改對象中的相關變量。
scene = bpy.data.scenes["Scene"]
scene.Cube.diffuse_color = [0]=red [1]=green [2]=blue
在上面的示例中,我嘗試更改多維數據集的顏色,但是它失敗,並顯示錯誤“無法分配給文字”。 我該如何解決?
以下是一個簡單的代碼段,向您展示如何在Blender中更改默認多維數據集的顏色:
import bpy
activeObject = bpy.context.active_object #Set active object to variable
mat = bpy.data.materials.new(name="MaterialName") #set new material to variable
activeObject.data.materials.append(mat) #add the material to the object
bpy.context.object.active_material.diffuse_color = (1, 0, 0) #change color
您還可以通過以下方式通過相關屬性(位置,rotation_euler-用於Euler XYZ旋轉和縮放)訪問對象的變換:
>>> object.location
Vector((-2.609607696533203, -3.618044137954712, 1.8581657409667969))
>>> object.rotation_euler
Euler((-0.6668576598167419, 0.697817325592041, -1.8853096961975098), 'XYZ')
>>> object.scale
Vector((1.2768771648406982, 1.4246054887771606, 0.6418209075927734))
希望這對您有一個很好的提示。
首先,您得到的錯誤是因為您顯示的代碼不是有效的python代碼,要更改顏色值,您需要將索引( [0]
)附加到屬性名稱上,並將要分配的值放在另一個上=
符號的一面。
color[0] = 0.1
可以在一行中將相同的值分配給多個屬性-
color[0] = color[1] = color[2] = 0.2
您還可以使用元組將所有四個值(顏色包括Alpha)分配給color屬性-
red = blue = green = alpha = 0.2
color = (red, green, blue, alpha)
現在,您正在嘗試做的事情-
訪問混合器數據有兩種方法, bpy僅用於在建模,紋理化等過程中訪問數據。
當游戲引擎正在運行時,bpy不可用,您需要使用bge來訪問分配給python控制器的腳本中的任何數據。
要獲得您要嘗試的工作,請首先為材質啟用對象顏色,然后可以在材質設置中的選項下找到它。 啟用此功能后,您可以調整對象的color屬性-
import bge
cont = bge.logic.getCurrentController()
own = cont.owner
own.color[0] = 0.2 # red
own.color[1] = 0.3 # green
own.color[2] = 0.4 # blue
可以訪問其他對象,您可以使用getCurrentScene()
獲取具有對象列表的當前場景,
scn = bge.logic.getCurrentScene()
enemy = scn.objects['enemy']
您可以在許多API頁面中找到有關游戲引擎類型的示例代碼,並找到blender.stackexchange是詢問Blender問題的更好位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.