]
poseRig(bent, poseTable1)
return
if __name__ == "__main__":
run((0,5,0))
ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π°ΡΠΌΠ°ΡΡΡΡ ΠΈ ΠΌΠ΅Ρ. ΠΡΠΌΠ°ΡΡΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΈ ΠΊΠΎΡΡΠΈ (Base (Π±Π°Π·ΠΎΠ²Π°Ρ), Mid (ΡΡΠ΅Π΄Π½ΡΡ), Tip (ΠΊΠΎΠ½Π΅ΡΠ½Π°Ρ)) ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
1. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ IK Mid -> Tip.
2. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Stretch To Mid -> Tip.
3. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Copy Rotation Base -> Tip.
ΠΠ΅Ρ Π΄Π΅ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π°ΡΠΌΠ°ΡΡΡΠΎΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π°ΡΠΌΠ°ΡΡΡΡ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π³ΡΡΠΏΠΏΡ Π²Π΅ΡΡΠΈΠ½.
#----------------------------------------------------------
# File rigged_mesh.py
#----------------------------------------------------------
import bpy, mathutils
def createArmature(origin):
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°ΡΠΌΠ°ΡΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
amt = bpy.data.armatures.new('MyRigData')
rig = bpy.data.objects.new('MyRig', amt)
rig.location = origin
rig.show_x_ray = True amt.show_names = True
# ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊ ΡΡΠ΅Π½Π΅
scn = bpy.context.scene
scn.objects.link(rig)
scn.objects.active = rig scn.update()
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΉ
#next two lines by PKHG SVN 36504 W32
bpy.ops.object.editmode_toggle()
# bpy.ops.object.mode_set(mode='EDIT')
#original does not work??!! bpy.ops.object.mode_set(mode='EDIT')
base = amt.edit_bones.new('Base')
base.head = (0,0,0)
base.tail = (0,0,1)
mid = amt.edit_bones.new('Mid')
mid.head = (0,0,1)
mid.tail = (0,0,2)
mid.parent = base
mid.use_connect = True
tip = amt.edit_bones.new('Tip')
tip.head = (0,0,2)
tip.tail = (0,0,3)
# ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΉ. ΠΡΠΌΠ°ΡΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ·Ρ.
bpy.ops.object.mode_set(mode='POSE')
# ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ IK Mid -> Tip
pMid = rig.pose.bones['Mid']
cns1 = pMid.constraints.new('IK')
cns1.name = 'Ik'
cns1.target = rig
cns1.subtarget = 'Tip'
cns1.chain_count = 1
# ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ StretchTo Mid -> Tip Ρ Π²Π»ΠΈΡΠ½ΠΈΠ΅ΠΌ 0.5
cns2 = pMid.constraints.new('STRETCH_TO')
cns2.name = 'Stretchy'
cns2.target = rig
cns2.subtarget = 'Tip'
cns2.influence = 0.5
cns2.keep_axis = 'PLANE_X'
cns2.volume = 'VOLUME_XZX'
# ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Copy rotation Base -> Tip
pBase = rig.pose.bones['Base']
cns3 = pBase.constraints.new('COPY_ROTATION')
cns3.name = 'Copy_Rotation'
cns3.target = rig
cns3.subtarget = 'Tip'
cns3.owner_space = 'WORLD'
cns3.target_space = 'WORLD'
bpy.ops.object.mode_set(mode='OBJECT')
return rig
def createMesh(origin):
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ° ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
me = bpy.data.meshes.new('Mesh')
ob = bpy.data.objects.new('MeshObject', me)
ob.location = origin
# ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊ ΡΡΠ΅Π½Π΅
scn = bpy.context.scene
scn.objects.link(ob)
scn.objects.active = ob
scn.update()
# Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π²Π΅ΡΡΠΈΠ½.
verts = [
(0.5, 0.5,0), (0.5,-0.5,0), (-0.5,-0.5,0), (-0.5,0.5,0),
(0.5,0.5,1), (0.5,-0.5,1), (-0.5,-0.5,1), (-0.5,0.5,1),
(-0.5,0.5,2), (-0.5,-0.5,2), (0.5,-0.5,2), (0.5,0.5,2),
(0.5,0.5,3), (0.5,-0.5,3), (-0.5,-0.5,3), (-0.5, 0.5,3)
]
# Π‘ΠΏΠΈΡΠΎΠΊ Π³ΡΠ°Π½Π΅ΠΉ.
faces = [
(0, 1, 2, 3),
(0, 4, 5, 1),
(1, 5, 6, 2),
(2, 6, 7, 3),
(4, 0, 3, 7),
(4, 7, 8, 11),
(7, 6, 9, 8),
(6, 5, 10, 9),
(5, 4, 11, 10),
(10, 11, 12, 13),
(9, 10, 13, 14),
(8, 9, 14, 15),
(11, 8, 15, 12),
(12, 15, 14, 13)
]
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ° ΠΈΠ· ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ ΡΠΏΠΈΡΠΊΠΎΠ² Π²Π΅ΡΡΠΈΠ½, ΡΡΠ±Π΅Ρ, Π³ΡΠ°Π½Π΅ΠΉ.
# ΠΠ»ΠΈ ΡΡΠ±ΡΠ° ΠΈΠ»ΠΈ Π³ΡΠ°Π½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ [], ΠΈΠ½Π°ΡΠ΅ ΠΠ°ΠΌ Π½ΡΠΆΠ½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
me.from_pydata(verts, [], faces)
# ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ° Ρ Π½ΠΎΠ²ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ
me.update(calc_edges=True)
return ob
def skinMesh(ob, rig):
# Π‘ΠΏΠΈΡΠΊΠΈ Π²Π΅ΡΡΠΈΠ½ Π² Π³ΡΡΠΏΠΏΠ°Ρ , Π² ΡΠΎΡΠΌΠ΅ (Π²Π΅ΡΡΠΈΠ½Π°, Π²Π΅Ρ)
vgroups = {}
vgroups['Base'] = [
(0, 1.0), (1, 1.0), (2, 1.0), (3, 1.0),
(4, 0.5), (5, 0.5), (6, 0.5), (7, 0.5)]
vgroups['Mid'] = [
(4, 0.5), (5, 0.5), (6, 0.5), (7, 0.5),
(8, 1.0), (9, 1.0), (10, 1.0), (11, 1.0)]
vgroups['Tip'] = [(12, 1.0), (13, 1.0), (14, 1.0), (15, 1.0)]
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³ΡΡΠΏΠΏ Π²Π΅ΡΡΠΈΠ½ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠ½ ΠΈ Π²Π΅ΡΠΎΠ²
# ΠΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ β ΡΠΏΠΈΡΠΎΠΊ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ
# Π±ΡΠ»ΠΎ Π½Π°Π·Π½Π°ΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡΠΈΠ½ ΡΡΠ°Π·Ρ
for name in vgroups.keys():
grp = ob.vertex_groups.new(name)
for (v, w) in vgroups[name]:
grp.add([v], w, 'REPLACE')
# ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ-ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π°ΡΠΌΠ°ΡΡΡΡ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
# Π³ΡΡΠΏΠΏ Π²Π΅ΡΡΠΈΠ½, Π° Π½Π΅ envelopes
mod = ob.modifiers.new('MyRigModif', 'ARMATURE')
mod.object = rig mod.use_bone_envelopes = False
mod.use_vertex_groups = True
return
def run(origin):
rig = createArmature(origin)
ob = createMesh(origin)
skinMesh(ob, rig)
# ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΡΠΈ Tip Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ·Ρ
bpy.context.scene.objects.active = rig
bpy.ops.object.mode_set(mode='POSE')
ptip = rig.pose.bones['Tip']
ptip.location = (0.2,-0.5,0)
rotMatrix = mathutils.Matrix.Rotation(0.6, 3, 'X')
ptip.rotation_quaternion = rotMatrix.to_quaternion()
return
if __name__ == "__main__":
run((0,0,0))
ΠΡΡΠΈΠ±ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π»ΠΈΡΡΡ Π½Π° ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ·Ρ Π°ΡΠΌΠ°ΡΡΡΡ (Π³ΠΎΠ»ΠΎΠ²Π°, Ρ Π²ΠΎΡΡ, ΠΏΠΎΠ²ΠΎΡΠΎΡ, ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΈ Ρ.ΠΏ.), Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΡΠΈ Π² ob.data.edit bones), ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π°ΡΡΠΈΠ±ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠ·ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ Π°ΡΠΌΠ°ΡΡΡΠ° Π±ΡΠ»Π° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ·Ρ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΡΠΈ Π² ob.pose.bones). ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ Π·Π½Π°Ρ, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΆΠΈΠΌΠ°ΠΌΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ·Ρ β Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.object.mode_set(mode='POSE')
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΡΡΡ Π½Π° Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΡΡΡ, ΡΡΠΎ Π°ΠΊΡΠΈΠ²Π΅Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ bpy.context.scene.objects.active.
ΠΡΠΎΡ ΡΠΊΡΠΈΠΏΡ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΡΠ³Π»Ρ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° roll ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡΠ½Π°ΡΡΠΊΠΈ (ΠΈΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° 'SrcRig') Π² ΡΠ΅Π»Π΅Π²ΡΡ ΠΎΡΠ½Π°ΡΡΠΊΡ (ΠΈΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½Π° 'TrgRig'). ΠΠ±Π΅ Π°ΡΠΌΠ°ΡΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΊΠΎΡΡΠ΅ΠΉ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.
#----------------------------------------------------------
# File copy_roll.py
#----------------------------------------------------------
import bpy
def copyRolls(src, trg):
rolls = {} bpy.context.scene.objects.active = src
bpy.ops.object.mode_set(mode='EDIT')
for eb in src.data.edit_bones:
rolls[eb.name] = eb.roll
bpy.ops.object.mode_set(mode='POSE')
bpy.context.scene.objects.active = trg
bpy.ops.object.mode_set(mode='EDIT')
for eb in trg.data.edit_bones:
oldRoll = eb.roll
eb.roll = rolls[eb.name]
print(eb.name, oldRoll, eb.roll)
bpy.ops.object.mode_set(mode='POSE')
return
objects = bpy.context.scene.objects
copyRolls(objects['SrcRig'], objects['TrgRig'])
Π’ΡΠΈ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΡΠΈΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΈΠ·ΡΡΠ°Π»ΠΈ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π² ΠΠΈΡΠΎΠ½Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌ.
β’ ΠΠ΅ΡΠΎΠ΄ Π΄Π°Π½Π½ΡΡ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠ°ΠΆΠ°Π΅Ρ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΠ»Π΅Π½Π΄Π΅ΡΠ΅.
ΠΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠ»Ρ ΠΌΠ΅ΡΠ°:
me = bpy.data.meshes.new(meshName)
ob = bpy.data.objects.new(obName, me)
ΠΈ Π΄Π»Ρ Π°ΡΠΌΠ°ΡΡΡΡ:
amt = bpy.data.armatures.new(amtname)
ob = bpy.data.objects.new(obname, amt)
β’ ΠΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ΅Π½Π΅ ΠΈ Π΄Π΅Π»Π°Π΅ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΈΠ»ΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ. ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ² Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
scn = bpy.context.scene
scn.objects.link(ob)
scn.objects.active = ob
ob.select = True
β’ ΠΠ°ΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅. Π ΡΠ»ΡΡΠ°Π΅ ΠΌΠ΅ΡΠ°, ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠΈ Π²Π΅ΡΡΠΈΠ½ ΠΈ Π³ΡΠ°Π½Π΅ΠΉ.
me.from_pydata(verts, [], faces)
Π ΡΠ»ΡΡΠ°Π΅ Π°ΡΠΌΠ°ΡΡΡΡ, ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π² ΡΠ΅ΠΆΠΈΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊΠΎΡΡΡ.
bpy.ops.object.mode_set(mode='EDIT')
bone = amt.edit_bones.new('Bone')
bone.head = (0,0,0)
bone.tail = (0,0,1)
β’ ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. Π ΡΠ»ΡΡΠ°Π΅ ΠΌΠ΅ΡΠ°, ΠΌΡ ΡΠ²Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ update.
me.update()
Π£ Π°ΡΠΌΠ°ΡΡΡΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π΅Ρ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².