Created
July 23, 2015 11:59
-
-
Save nutti/8ade332c39682671c7fb to your computer and use it in GitHub Desktop.
[Blender] スクリプトの内部からOpenGLを利用する ref: http://qiita.com/nutti/items/835b745257a79ed215e8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import bgl |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# スクリプトインストール時の処理 | |
def register(): | |
bpy.utils.register_module(__name__) | |
RectRenderer.handle_add() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 「View3D」領域の描画関数を登録 | |
@staticmethod | |
def handle_add(): | |
RectRenderer.__handle = bpy.types.SpaceView3D.draw_handler_add( | |
RectRenderer.render_rect, | |
(), 'WINDOW', 'POST_PIXEL') |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# スクリプトアンインストール時の処理 | |
def unregister(): | |
bpy.utils.unregister_module(__name__) | |
RectRenderer.handle_remove() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 「View3D」領域の描画関数を登録解除 | |
@staticmethod | |
def handle_remove(): | |
if RectRenderer.__handle is not None: | |
bpy.types.SpaceView3D.draw_handler_remove( | |
RectRenderer.__handle, 'WINDOW') | |
RectRenderer.__handle = None |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 「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() # 四角形の描画を終了 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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