Takunojiのプログラミング・プレイグラウンド(遊び場)

Javaプログラミングを基本にして、ゲーム作成に必要なことの調査結果、やったら面白そうなことなどを記載します。プログラミングのススメ的なことも記載します。プログラミングで楽しく遊ぶために色々と記載して行きます。

Blender Python BMesh 〜点の座標について学ぶ〜

前回スクリプトで点を作成し、線を作りました。※イマイチな感じでしたが。。。
今回は、復習がてらに線を作成してから始めます。

一回作成したものは、元のソースから持って来れば良いので
速攻でできます。
>> ob = bpy.context.object
>>> bm = bmesh.from_edit_mesh(ob.data)
>>> bm.verts
<BMVertSeq object at 0x114fb5900>
>>> v1 = bm.verts.new( (0,0,0) )
>>> v2 = bm.verts.new( (1,1,0) )
>>> v3 = bm.verts.new( (-1,-1,0) )
>> bm.edges.new( (v1, v2) )
<BMEdge(0x115000150), index=-1, verts=(0x10bba2af0/-1, 0x10bba2b28/-1)>

>>> bm.edges.new( (v2, v3) )
<BMEdge(0x1150001a0), index=-1, verts=(0x10bba2b28/-1, 0x10bba2b60/-1)>

>>> bm.edges.new( (v3, v1) )

<実行結果>

f:id:Takunoji:20180327202643p:plain    f:id:Takunoji:20180327203241p:plain

左のものは、作成した点が平面状にあり、隠れていたので動かしました。
右のものは、移動した、板の上に点を作成したものです。

くどいようですが、座標が確認できるように下記のスクリプトを実行しました。

import bpy, bmesh

ob = bpy.context.object
bpy.ops.object.mode_set(mode='EDIT')
bm = bmesh.from_edit_mesh(ob.data)

v1 = bm.verts.new( (0,0,0) )
v2 = bm.verts.new( (1,0,0) )
v3 = bm.verts.new( (0,1,0) )

bm.edges.new( (v1, v2) )
bm.edges.new( (v2, v3) )
bm.edges.new*1

f:id:Takunoji:20180327205651p:plain


次に板を180度回転させて、以下のようにして同じスクリプトを実行します。

f:id:Takunoji:20180327210050p:plain    f:id:Takunoji:20180327210221p:plain

ちょっとわかりづらいのですが、回転後も同じ場所に点が作成されました。
作成する点を以下のように変更し再度スクリプトを実行します。
v1 = bm.verts.new*2
v2 = bm.verts.new*3
v3 = bm.verts.new*4

f:id:Takunoji:20180327210502p:plain

どうやらBMeshで点を作成するときは、オブジェクト(Plane)の座標に依存するようです。

つまり、元々の位置の中心=(0,0,0)で回転させてもオブジェクト上の座標は変わらないということがわかりました。

なるほど!!

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseにCDTをインストール〜
  3. Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
 

*1:v3, v1

*2:0,0,0

*3:-1,0,0

*4:0,-1,0