簡體   English   中英

如何使用Python在Blender中更改對象的屬性

[英]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

在上面的示例中,我嘗試更改多維數據集的顏色,但是它失敗,並顯示錯誤“無法分配給文字”。 我該如何解決?

幾點建議

  1. 在開始使用Blender進行編碼之前,您必須確定自己在做什么,因為除非很難找到解決問題的方法,否則這是很難的。
  2. 始終查看文檔
  3. Blender有一個隱藏的控制台,您可以通過拖放UI的較高部分來顯示它。 每次您在UI中執行某項操作(移動對象,更改顏色等)時,都會在此處顯示相應的Python命令: 在此處輸入圖片說明

關於你的問題

以下是一個簡單的代碼段,向您展示如何在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM