分からん具合が高まって死にそうになる
テキストエディタから実行した時とpythonコンソールで結果が違う場合も同じ
原因
・前のデータが残ってる
・importするものが足りない
・bmeshにbm.faces.ensure_lookup_table()が必要
・変更が更新されてない
前のデータが残ってる
「コンソール→すべてクリア」をやっても消えないのでblenderを再起動してからやってみる
importするものが足りない
pythonコンソールではsinやcosなど最初からimportしてあるものがあってテキストエディタでは
import math
したうえ
math.sin()
としなければならない
pythonコンソールに合わせたい、計算式が長くなって困るなら
from math import sin,cos,tan,acos,pi
などとしておくといい
bmeshにbm.faces.ensure_lookup_table()が必要
何度も嵌ってるので何度も書くが
bm = bmesh.from_edit_mesh(.data)
の後に
bm.faces.ensure_lookup_table()が必要な事がある。
変更が更新されていない
matrix_worldで変更が更新されないことがあった。
mat = obj.matrix_world
#オブジェクトを移動
mat = obj.matrix_world
するとmatが変更前のmatorixと同じになってる恐怖
変更後
bpy.context.view_layer.update()
実行する事。
ただし、
mat_copy = obj.matrix_world.copy()
を使ってる場合はupdateできないので
自力で変更後のmatrix_worldを計算するか物体をリンクしてからmatrix_worldを取得するしかない
bpy.context.view_layer.update()はメッシュ変更後に画面の表示が変更されない場合にも有効