Page MenuHome
Paste P2902

blender_normal_update_fail.py
ActivePublic

Authored by Campbell Barton (campbellbarton) on Apr 21 2022, 9:15 AM.
# Run this from the command line:
# blender.bin --factory-startup -b /d/untitled.blend --python blender_normal_update_fail.py
import array
import bpy
from mathutils import Matrix
from math import pi
from random import random, seed
seed(42)
def test_transform(ob, me):
me.transform(ob.matrix_basis)
def test_vert_set(ob, me):
me.vertices[0].co = 100, 100, 100
def test_vert_adjust(ob, me):
me.vertices[0].co.x += 1.0
def test_vert_adjust_foreach_set(ob, me):
co_arr = array.array('f', [0] * (len(me.vertices) * 3))
co_arr[:] = array.array('f', [random() for v in co_arr])
me.vertices.foreach_set("co", co_arr)
def test_object_update_tag(ob, me):
me.vertices[0].co.x += 1.0
ob.update_tag(refresh={'DATA'})
def test_mesh_update_tag(ob, me):
me.vertices[0].co.x += 1.0
me.update_tag()
for test_fn in (
test_mesh_update_tag,
test_object_update_tag,
test_transform,
test_vert_adjust,
test_vert_adjust_foreach_set,
test_vert_set,
):
print("\nRunning:", test_fn.__name__)
bpy.ops.wm.read_homefile(use_empty=True, use_factory_startup=True)
bpy.ops.mesh.primitive_plane_add()
ob = bpy.data.objects[0]
ob.rotation_euler = 0, pi, 0
me = ob.data
no_arr = array.array('f', [0] * (len(me.vertices) * 3))
me.vertices.foreach_get("normal", no_arr)
no_arr_before = tuple(no_arr)
# print(no_arr, "before")
co_arr = array.array('f', [0] * (len(me.vertices) * 3))
me.vertices.foreach_get("co", co_arr)
co_arr_before = tuple(co_arr)
test_fn(ob, me)
me.vertices.foreach_get("co", co_arr)
if tuple(co_arr) == co_arr_before:
print("TEST DID NOT MOVE VERTICES!")
continue
me.vertices.foreach_get("normal", no_arr)
# print(no_arr, "after")
if (no_arr_before) == tuple(no_arr):
print("FAILED TO UPDATE!")
else:
print("SUCCEEDED TO UPDATE!")

Event Timeline

Campbell Barton (campbellbarton) changed the title of this paste from untitled to blender_normal_update_fail.py.