アストラルプリズム

PC、スマホ、ゲームなどの備忘録と日記

2020-01-01から1ヶ月間の記事一覧

Blender ノーマルの向き

ノーマル軸に沿って操作する時の注意 (辺や頂点のノーマル方向は数値で取れない) 物体の面を選択してる場合 面の垂直方向はノーマルZ軸なのは一定。 面の長手方向が自動的にノーマルY軸になる。 何の罠だよ何の罠だよ何の罠だよ!! 変形させた後にノーマ…

blender python 角度を指定してshearする

角棒の厚みや太さを変えずに端面を角度を指定して変更したいので作ってみた 角棒の長手方向をローカルのX軸とする 直方体のみ使用可能(二回目からは指定した角度での辺の移動量しか動かない) import bpy , bmesh from math import radians , tan obj = bpy…

blender python forの最後にゼロ番目の値を使いたい

輪になってるメッシュで今の頂点座標を隣の頂点座標に足して・・・最後の頂点と一番最初の頂点座標に足すというのをしたい時用。 これはしっかりメモとりたい・・・。というようなfor文を書くには import bpy , bmesh obj=bpy.context.object bpy.ops.object…

blender python オブジェクトの原点を座標指定して移動する

手動だとカーソルを介してオブジェクトの原点を移動するんだけどカーソルを動かすの超めんどいのでMatrix_worldを使って移動する。手順としては ・編集モードで全部の頂点(メッシュ)を新しく設定したい原点位置からの距離に移動 ・オブジェクトモードでオ…

blender python bmeshをオブジェクトモードで使う方法

編集モードにしてからbmesh.from_edit_mesh(obj.data)してたけど編集モードにしなくてもbmesh使える。 頂点の座標だけ取ってすぐ別のオブジェクトを編集したいときとかに便利。こんなのあるなんて知らなかったよ…。編集モードを使う場合 import bpy, bmesh o…

Blender python meshの順番(index)を表示するアドオン

meshの順番(index)を表示させるアドオンidCheckerを作った。(Blender2.81向け) 普通のモデリングでは全く必要ないが、あらかじめ用意しておいたオブジェクトの頂点をスクリプトでいじるのに役に立つ...と思う。 初めてgithubを登録して初めてスクリプト…

Blender python UIにボタンを追加する

UIにボタンを追加したいけど検索すると唐突にclassが現れ混乱したので書く。BlenderAPIリファレンスによれば、ボタンを追加するにはclassを使わないといけないらしい。 そして以下の手順が必要らしい。 ・bpy.types.Operatorを使ったクラスを作る ・drawを使…

blender python 多角形の内角を知りたい

多角形の内角を知りたい。 bmeshを使う場合 一枚のポリゴンの場合 import bpy, bmesh from math import degrees obj = bpy.context.object bpy.ops.object.mode_set(mode = 'EDIT') bm = bmesh.from_edit_mesh(obj.data) bm.faces.ensure_lookup_table() rad…

Blender pythonでメッシュから立方体を作る。

3Dビュー→追加→メッシュ→立方体で作られるメッシュと同じものを作りたい。この立方体実はBlenderを起動したときに出てくる立方体とは面の向きが違うのでちょっと注意が必要なのである。 bpy.ops系の場合 一行で済む bpy.ops.mesh.primitive_cube_add(enter_…

Blender python マトリックスワールドで回転させる

図の通り、回転する軸を指定して回転させたい 手動の場合 編集モードで回転させたい軸を選択して メッシュ→スナップ→カーソル→選択物 にして トランスフォームピポットポイントを3Dカーソルにして 後はrを押して回転させればいい。 pythonスクリプトの場合 …

Blender pythonマトリックスワールドの使い方の解説が分かりやすいリンク

マトリックスワールドの定義は分かったものの使い方がよく分からなかった。 以下のリンクを読んだらよく分かった。大抵自分が悩んでる事は先人がQ&Aしてるので感謝。 とりあえずめもめも。 余談だけどグーグル翻訳が優秀で解説サイトを読むのがホントに楽に…

Blender python マトリックスワールドとは

座標軸を表すマトリックスワールドを理解しとけば三角関数やら複雑な式を使わなくてもメッシュの移動や変形が楽になるハズ。定義 マトリックスワールドとはある座標軸の傾きと原点からの距離を表したもの解説 図のように任意の座標軸をエンプティとすると分…

blender python コマンドのメモ

pythonコンソールでオートコンプリート機能を使うとインフォメーションウィンドウより詳しい事が分かる。 上の緑色がpythonコンソールでbpy.ops.transform.resize(と入力した後ctrl+スペースキー 青色が3Dビューで拡大縮小を使用したもの ちゃんとドキュメ…

Blender python mesh について

メモメモ・・・ obj = bpy.context.object msh = bpy.data.meshes[obj.data.name] #面に含まれる頂点のidをまとめて出力 msh.polygons[0].vertices[0:] #ループでidを使いたい時 p = msh.polygons[0] for i , id in enumerate(p.vertices): ... print(id) ..…

Blender python 指定したベクトルの方向に頂点を移動

指定したベクトル(ここではノーマル)の方向に頂点を移動する。 new_locのところまでは頂点の値はグローバル座標なので、マトリックスワールドを逆さ(invert)させたものを掛けてローカル座標に直している obj=bpy.data.objects['立方体.003'] mw=obj.matr…

Blender python なるべくbpy.opsを使わない方法

bpy.ops系は遅いのですよ・・・。 あとどれがアクティブでセレクトなのかとか後で改造するときに調べるの大変なのでなるべくbpy.data系を使っていきたい今日この頃・・・ 拡大縮小 import bpy #bpy.ops系(ローカル座標基準の場合のみ) bpy.ops.transform.res…

Blender python コンソールでは動くのにテキストエディタからだと動かない場合

分からん具合が高まって死にそうになる テキストエディタから実行した時とpythonコンソールで結果が違う場合も同じ 原因 ・前のデータが残ってる ・importするものが足りない ・bmeshにbm.faces.ensure_lookup_table()が必要 ・変更が更新されてない 前のデ…

python 四捨五入と切り上げ、切り捨て

四捨五入 import math math.round(4.5) 結果 4 math.round(4.6) 結果 5 pythonの四捨五入は五捨六入なので要注意 桁の指定は math.round(4.563,2) 結果 4.56 切りあげ math.ceil(2.2) 結果 3 切り捨て math.floor(2.2) 結果 2mathを付けたらながくて困る場合…