Page Menu
Home
Search
Configure Global Search
Log In
Paste
P2902
blender_normal_update_fail.py
Active
Public
Actions
Authored by
Campbell Barton (campbellbarton)
on Apr 21 2022, 9:15 AM.
Edit Paste
Archive Paste
View Raw File
Subscribe
Mute Notifications
Award Token
Tags
None
Subscribers
None
# 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
(
"
\n
Running:"
,
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)
created this paste.
Apr 21 2022, 9:15 AM
Campbell Barton (campbellbarton)
changed the title of this paste from untitled to
blender_normal_update_fail.py
.
Campbell Barton (campbellbarton)
mentioned this in
D14696: Mesh: Make vertex normal property read-only
.
Campbell Barton (campbellbarton)
edited the content of this paste.
(Show Details)
Apr 21 2022, 9:17 AM
Log In to Comment