夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Blenderでボタンを押すことでウェブサイトのリンクを開く機能を実装する

本日はBlender枠です。

今回は独自のBlenderツールを作成するうえで必要な、ボタンを押すことでドキュメントなどの指定したURLのウェブブラウザを開く機能を実装します。

〇webbrowser

webbrowserPythonの標準ライブラリに含まれているモジュールです。

 Webブラウザを制御するための便利な機能を提供しています。

 今回はwebbrouwerをインポートして処理を記述します。

import webbrowser

使い方は簡単で、open("URL")を呼び出すことでウェブブラウザが開きます。

webbrowser.open(url)

これをBlenderに合わせてオペレータを定義すると次のようになります。

class OpenURLOperator(bpy.types.Operator):
    bl_idname = "wm.open_url"
    bl_label = "Open URL"
    
    def execute(self, context):
        url = context.scene.url_to_open  
        webbrowser.open(url)
        return {'FINISHED'}

今回はurlを任意に指定できるようにしています。

〇コード全文

import bpy
import webbrowser

class OpenURLOperator(bpy.types.Operator):
    bl_idname = "wm.open_url"
    bl_label = "Open URL"
    
    def execute(self, context):
        url = context.scene.url_to_open  
        webbrowser.open(url)
        return {'FINISHED'}

class URLPanel(bpy.types.Panel):
    bl_label = "Open URL Panel"
    bl_idname = "PT_URLPanel"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = 'Tools'

    def draw(self, context):
        layout = self.layout
        layout.operator("wm.open_url")
        layout.prop(context.scene, "url_to_open")

def register():
    bpy.utils.register_class(OpenURLOperator)
    bpy.utils.register_class(URLPanel)
    bpy.types.Scene.url_to_open = bpy.props.StringProperty(default="https://www.example.com")

def unregister():
    bpy.utils.unregister_class(OpenURLOperator)
    bpy.utils.unregister_class(URLPanel)
    del bpy.types.Scene.url_to_open

if __name__ == "__main__":
    register()

こちらのコードを実行するとBlenderの3DView画面にToolという名前でタブが現れます。

中身は任意のurlを指定するテキストフィールドがあり、任意のウェブサイトのURLを指定し、OpenURLボタンを押すことでウェブサイトが開きます。

本日は以上です。