Skip to content

Instantly share code, notes, and snippets.

@nutti
Created July 23, 2015 11:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nutti/8ade332c39682671c7fb to your computer and use it in GitHub Desktop.
Save nutti/8ade332c39682671c7fb to your computer and use it in GitHub Desktop.
[Blender] スクリプトの内部からOpenGLを利用する ref: http://qiita.com/nutti/items/835b745257a79ed215e8
# スクリプトインストール時の処理
def register():
bpy.utils.register_module(__name__)
RectRenderer.handle_add()
# 「View3D」領域の描画関数を登録
@staticmethod
def handle_add():
RectRenderer.__handle = bpy.types.SpaceView3D.draw_handler_add(
RectRenderer.render_rect,
(), 'WINDOW', 'POST_PIXEL')
# スクリプトアンインストール時の処理
def unregister():
bpy.utils.unregister_module(__name__)
RectRenderer.handle_remove()
# 「View3D」領域の描画関数を登録解除
@staticmethod
def handle_remove():
if RectRenderer.__handle is not None:
bpy.types.SpaceView3D.draw_handler_remove(
RectRenderer.__handle, 'WINDOW')
RectRenderer.__handle = None
# 「View3D」領域の描画関数本体
@staticmethod
def render_rect():
# 描画領域の作成
positions = [
[10.0, 10.0], # 左下
[10.0, 600.0], # 左上
[600.0, 600.0], # 右上
[600.0, 10.0] # 右下
]
# OpenGLによる四角形の描画
bgl.glEnable(bgl.GL_BLEND) # アルファブレンドの有効化
bgl.glBegin(bgl.GL_QUADS) # 四角形の描画を開始
bgl.glColor4f(0.7, 0.5, 0.3, 0.6) # 描画する四角形の色を指定
for (v1, v2) in positions:
bgl.glVertex2f(v1, v2) # 頂点の登録
bgl.glEnd() # 四角形の描画を終了
import bpy
import bgl # OpenGLをBlender内部から利用するために必要
bl_info = {
"name": "Tutorial: OpenGL on Blender",
"author": "Nutti",
"version": (1, 0),
"blender": (2, 74, 0),
"location": "View3D > Tutorial: OpenGL on Blender",
"description": "Tutorial: Use Blender's OpenGL API.",
"warning": "",
"support": "COMMUNITY",
"wiki_url": "",
"tracker_url": "",
"category": "3D View"
}
class RectRenderer(bpy.types.Operator):
"""四角形を描画する"""
bl_idname = "view3d.rect_renderer"
bl_label = "Rect renderer"
__handle = None # 描画関数
# 「View3D」領域の描画関数を登録
@staticmethod
def handle_add():
RectRenderer.__handle = bpy.types.SpaceView3D.draw_handler_add(
RectRenderer.render_rect,
(), 'WINDOW', 'POST_PIXEL')
# 「View3D」領域の描画関数を登録解除
@staticmethod
def handle_remove():
if RectRenderer.__handle is not None:
bpy.types.SpaceView3D.draw_handler_remove(
RectRenderer.__handle, 'WINDOW')
RectRenderer.__handle = None
# 「View3D」領域の描画関数本体
@staticmethod
def render_rect():
# 描画領域の作成
positions = [
[10.0, 10.0], # 左下
[10.0, 600.0], # 左上
[600.0, 600.0], # 右上
[600.0, 10.0] # 右下
]
# OpenGLによる四角形の描画
bgl.glEnable(bgl.GL_BLEND) # アルファブレンドの有効化
bgl.glBegin(bgl.GL_QUADS) # 四角形の描画を開始
bgl.glColor4f(0.7, 0.5, 0.3, 0.6) # 描画する四角形の色を指定
for (v1, v2) in positions:
bgl.glVertex2f(v1, v2) # 頂点の登録
bgl.glEnd() # 四角形の描画を終了
# スクリプトインストール時の処理
def register():
bpy.utils.register_module(__name__)
RectRenderer.handle_add()
# スクリプトアンインストール時の処理
def unregister():
bpy.utils.unregister_module(__name__)
RectRenderer.handle_remove()
if __name__ == "__main__":
register()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment