bpy.ops.object.mode_set(mode='OBJECT')
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ Π±Π»ΠΎΠΊ Π΄Π°Π½Π½ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΠ»ΠΎΠΊ Π΄Π°Π½Π½ΡΡ ΠΊ ΠΏΡΠΈ ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΡΡΠΌ, ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ ΠΏΠΎΠ·ΠΆΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ.
β’ ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° bpy.ops.object.add. ΠΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²Π΅ΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ Π΄Π΅Π»Π°ΡΡ Π²ΡΡΡΠ½ΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ Π΄Π°Π½Π½ΡΡ : ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (ΡΠΎ Π΅ΡΡΡ ΠΌΠ΅Ρ ΠΈΠ»ΠΈ Π°ΡΠΌΠ°ΡΡΡΡ), ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊ ΡΡΠ΅Π½Π΅, Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ bpy.context.object Π²ΡΠ΅Π³Π΄Π° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΌΠ΅Ρ-ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ
bpy.ops.object.add(type='MESH')
ob = bpy.context.object
me = ob.data
ΠΈ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π°ΡΠΌΠ°ΡΡΡΡ:
bpy.ops.object.add(
type='ARMATURE',
enter_editmode=True,
location=origin)
ob = bpy.context.object
amt = ob.data
β’ ΠΠ°ΠΊ ΠΈ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ Π΄Π°Π½Π½ΡΡ , ΠΎΠ±ΡΠ΅ΠΊΡ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΠ»Ρ ΠΌΠ΅ΡΠ° ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π²Π΅ΡΡΠΈΠ½Ρ ΠΈ Π³ΡΠ°Π½ΠΈ:
me.from_pydata(verts, [], faces)
me.update()
Π° Π΄Π»Ρ Π°ΡΠΌΠ°ΡΡΡΡ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊΠΎΡΡΡ:
bone = amt.edit_bones.new('Bone')
bone.head = (0,0,0)
bone.tail = (0,0,1)
bpy.ops.object.mode_set(mode='OBJECT')
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ Π²Ρ ΠΎΠ΄ΠΈΡΡ Π² ΡΠ΅ΠΆΠΈΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π°ΡΠΌΠ°ΡΡΡΠ° Π²ΠΎΡΠ»Π° Π² Π½Π΅Π³ΠΎ ΡΠΆΠ΅ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ.
ΠΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ² Ρ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ.
β’ ΠΠΎΠ½ΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠΈΡΡΠ΅ΡΡΡ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄ΠΎΠΉ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ΅ΡΠ° ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ Ρ 4 ΡΡΠΎΡΠΎΠ½Π°ΠΌΠΈ:
bpy.ops.mesh.primitive_cone_add(
vertices=4,
radius=1,
depth=1,
cap_end=True)
ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π°ΡΠΌΠ°ΡΡΡΡ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΡΡΡΡ:
bpy.ops.object.armature_add()
bpy.ops.transform.translate(value=origin)
β’ ΠΠ°ΠΊ ΠΈ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅, ΠΌΡ Π·Π°ΡΠ΅ΠΌ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ Π²Π½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ· bpy.context.object.
ob = bpy.context.object
me = ob.data
ΠΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ, Π½ΠΎ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ² Π΄ΠΎΡΡΡΠΏΠ΅Π½. ΠΠ°ΠΆΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΌΠ΅Ρ ΠΏΠΈΡΠ°ΠΌΠΈΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π΄Π²ΡΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ: ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ΅ΡΡΡΡΡ ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠΌ, Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² Ρ ΠΎΠ±ΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΡΠ³ΠΈΠ΅ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ.
ΠΡΠΈΠΌΠΈΡΠΈΠ² Π½Π΅ ΠΎΠ±ΡΠ·Π°Π½ Π±ΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΎΡΡΡΠΌ; Π΅ΡΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ΅ΡΠ° ΠΎΠ±Π΅Π·ΡΡΠ½Ρ ΠΈΠ»ΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠ½Π°ΡΡΠΊΠ°. ΠΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² Π²ΡΠ΅Π³Π΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π·Π°Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ.
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π²ΡΠ΅ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Π² ΡΡΠΎΠΉ Π·Π°ΠΌΠ΅ΡΠΊΠ΅.
#----------------------------------------------------------
# File objects.py
#----------------------------------------------------------
import bpy
import mathutils
from mathutils import Vector
def createMeshFromData(name, origin, verts, faces):
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ° ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
me = bpy.data.meshes.new(name+'Mesh')
ob = bpy.data.objects.new(name, me)
ob.location = origin ob.show_name = True
# ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊ ΡΡΠ΅Π½Π΅, ΠΎΠ½ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ
scn = bpy.context.scene
scn.objects.link(ob)
scn.objects.active = ob
ob.select = True
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ° ΠΈΠ· ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ verts (Π²Π΅ΡΡΠΈΠ½), faces (Π³ΡΠ°Π½Π΅ΠΉ).
me.from_pydata(verts, [], faces)
# ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ° Ρ Π½ΠΎΠ²ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ
me.update()
return ob
def createMeshFromOperator(name, origin, verts, faces):
bpy.ops.object.add(
type='MESH',
enter_editmode=False,
location=origin)
ob = bpy.context.object
ob.name = name
ob.show_name = True
me = ob.data me.name = name+'Mesh'
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ° ΠΈΠ· ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ verts (Π²Π΅ΡΡΠΈΠ½), faces (Π³ΡΠ°Π½Π΅ΠΉ).
me.from_pydata(verts, [], faces)
# ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ° Ρ Π½ΠΎΠ²ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ
me.update()
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅ΠΆΠΈΠΌΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
bpy.ops.object.mode_set(mode='OBJECT')
return ob
def createMeshFromPrimitive(name, origin):
bpy.ops.mesh.primitive_cone_add(
vertices=4,
radius=1,
depth=1,
cap_end=True,
view_align=False,
enter_editmode=False,
location=origin,
rotation=(0, 0, 0))
ob = bpy.context.object
ob.name = name
ob.show_name = True
me = ob.data
me.name = name+'Mesh'
return ob
def createArmatureFromData(name, origin):
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ° ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
amt = bpy.data.armatures.new(name+'Amt')
ob = bpy.data.objects.new(name, amt)
ob.location = origin
ob.show_name = True
# ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊ ΡΡΠ΅Π½Π΅, ΠΎΠ½ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ
scn = bpy.context.scene
scn.objects.link(ob)
scn.objects.active = ob
ob.select = True
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΉ ΠΊΠΎΡΡΠΈ
bpy.ops.object.mode_set(mode='EDIT')
bone = amt.edit_bones.new('Bone')
bone.head = (0,0,0)
bone.tail = (0,0,1)
bpy.ops.object.mode_set(mode='OBJECT')
return ob
def createArmatureFromOperator(name, origin):
bpy.ops.object.add(
type='ARMATURE',
enter_editmode=True,
location=origin)
ob = bpy.context.object
ob.name = name
ob.show_name = True
amt = ob.data
amt.name = name+'Amt'
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΉ ΠΊΠΎΡΡΠΈ
bone = amt.edit_bones.new('Bone')
bone.head = (0,0,0)
bone.tail = (0,0,1)
bpy.ops.object.mode_set(mode='OBJECT')
return ob
def createArmatureFromPrimitive(name, origin):
bpy.ops.object.armature_add()
bpy.ops.transform.translate(value=origin)
ob = bpy.context.object
ob.name = name
ob.show_name = True
amt = ob.data
amt.name = name+'Amt'
return ob
def run(origo):
origin = Vector(origo)
(x,y,z) = (0.707107, 0.258819, 0.965926)
verts = ((x,x,-1), (x,-x,-1), (-x,-x,-1), (-x,x,-1), (0,0,1))
faces = ((1,0,4), (4,2,1), (4,3,2), (4,0,3), (0,1,2,3))
cone1 = createMeshFromData('DataCone', origin, verts, faces)
cone2 = createMeshFromOperator('OpsCone', origin+Vector((0,2,0)), verts, faces)
cone3 = createMeshFromPrimitive('PrimCone', origin+Vector((0,4,0)))
rig1 = createArmatureFromData('DataRig', origin+Vector((0,6,0)))
rig2 = createArmatureFromOperator('OpsRig', origin+Vector((0,8,0)))
rig3 = createArmatureFromPrimitive('PrimRig', origin+Vector((0,10,0)))
return
if __name__ == "__main__":
run((0,0,0))
ΠΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΈ ΡΠ΅ΠΊΡΡΡΡΡ
ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊΡΠ°ΡΠ½ΡΠΉ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π», ΠΈ ΡΠΈΠ½ΠΈΠΉ ΠΏΠΎΠ»ΡΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ, ΠΈ Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ ΠΈΡ , ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΊΡΠ±Ρ ΠΈ ΡΡΠ΅ΡΠ΅.
#----------------------------------------------------------
# File material.py
#----------------------------------------------------------
import bpy
def makeMaterial(name, diffuse, specular, alpha):
mat = bpy.data.materials.new(name)
mat.diffuse_color = diffuse
mat.diffuse_shader = 'LAMBERT'
mat.diffuse_intensity = 1.0
mat.specular_color = specular
mat.specular_shader = 'COOKTORR'
mat.specular_intensity = 0.5
mat.alpha = alpha
mat.ambient = 1
return mat
def setMaterial(ob, mat):
me = ob.data
me.materials.append(mat)
def run(origin):
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ²
red = makeMaterial('Red', (1,0,0), (1,1,1), 1)
blue = makeMaterial('BlueSemi', (0,0,1), (0.5,0.5,0), 0.5)
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΈΠ½Π΅Π³ΠΎ ΠΊΡΠ±Π°
bpy.ops.mesh.primitive_cube_add(location=origin)
setMaterial(bpy.context.object, red)
# ΠΈ ΠΊΡΠ°ΡΠ½ΠΎΠΉ ΡΡΠ΅ΡΡ
bpy.ops.mesh.primitive_uv_sphere_add(location=origin)
bpy.ops.transform.translate(value=(1,0,0))
setMaterial(bpy.context.object, blue)
if __name__ == "__main__":
run((0,0,0))
ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Ρ Π΄Π²ΡΠΌΡ ΡΠ΅ΠΊΡΡΡΡΠ°ΠΌΠΈ: ΡΠ΅ΠΊΡΡΡΡΠ° image, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠ°Ρ Π½Π° ΡΠ²Π΅Ρ ΠΈ Π°Π»ΡΡΡ, ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½Π°Ρ bump-ΡΠ΅ΠΊΡΡΡΡΠ°. (ΠΠΎΠΆΠ΅Ρ Ρ ΡΠ΅Π³ΠΎ-ΡΠΎ Π½Π΅Π΄ΠΎΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, Π½ΠΎ ΠΈΡ ΡΠ°ΠΌ ΡΡΠΈ Π²ΠΎΠΎΠ±ΡΠ΅-ΡΠΎ... - ΠΏΡΠΈΠΌ. ΠΏΠ΅Ρ.)
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎΡ ΡΠΈΡΡΠ½ΠΎΠΊ ΠΊΠ°ΠΊ ΡΠ΅ΠΊΡΡΡΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈΠΌΡ Π½Π° color.png:
#----------------------------------------------------------
# File texture.py
#----------------------------------------------------------
import bpy, os
def run(origin):
# ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»Π° Ρ ΡΠΈΡΡΠ½ΠΊΠΎΠΌ. ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π·Π΄Π΅ΡΡ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ snippets