夜風のMixedReality

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

3Dモデリング

Blenderでバッチファイルを使用して外部Pythonライブラリを導入する

本日はBlenderPython枠です。 redhologerbera.hatenablog.com 〇BlenderのPythonパスの指定 前回はBlenderがインストールされているパスを取得することはできましたが、実際はBlenderのPythonに対してライブラリをインストールする必要があります。 そこで前…

Blenderでバッチファイルを実行してBlenderのインストールパスをエクスプローラーで開く

本日はBlender枠です。 今回は配布したアドオンで必要となる外部依存ライブラリをバッチファイルを使用してインストールするために、その前段階としてBlenderのインストールパスをバッチファイルに書き込む処理を行います。 ライブラリによってはBlenderにデ…

BlenedeIKで二つのコントローラーボーンで位置と向きを制御する

本日はBlender枠です。 〇BlenderのIK IKはInverseKinematicと呼ばれ、簡単に説明するとある場所にあるボーンがあるためには接続されている別のボーンはどのような挙動をしているかを計算するアルゴリズムです。 具体的にはキャラクターを例として、通常ボー…

Blenderであるライブラリが既にインストールされているかを確認する

本日はBlender Python枠です。 BlenderではPython環境が構築されており、任意にライブラリを追加することができます。 例えばPythonで機械学習を行うためのライブラリであるPytorchなどはデフォルトでBlenderに入っていませんが、任意に追加することができま…

Blenderスクリプトで任意のパスにあるテキストの内容を書き換える

本日はBlender(Python)枠です。 以前BlenderPyrhonで外部ファイルを読み込むことを行いました。 redhologerbera.hatenablog.com 今回は任意の外部パスにあるテキストファイルの内容をBlenderで書き換えていきます。 〇BlenderPythonで外部テキストファイルの…

Blenderで外部パスのバッチファイルを実行する

本日はBlender枠です。 現在Blenderのアドオンを作成していますが、筆者のツールでは外部ライブラリのインポートを必要としています。 筆者自身の環境では環境構築は簡単に行うことができますが、アドオンとして配布する場合、環境構築によるエラーが発生す…

Blenderでスクリーンショットを撮影する

本日はBlender学習枠です。 〇環境 今回はBlender 3.4で動作確認、コードの実行を行っています。 〇Blenderでスクリーンショットを撮影する Blenderではレンダリング以外に本ブログのように作業状況など、Blnederの画面をスクリーンショットして撮影する機能…

SubstancePainterでポリゴンごとにマスクする

本日はSubstance 3D枠です。 本日はSubstancePainterでポリゴンごとにマスクを作成し、塗り分ける手法をまとめます。 〇SubstancePainterでポリゴンごとにマスクを作成する ①SubstancePainterにモデルをインポートします。 今回はベイクまで済ませました。 …

Blenderでポリゴン数が多い順にオブジェクトを表示する その⑤アドオンとして登録できるようにする

本日はBlender枠です。Blenderでポリゴンを可視化するツールを作成しています。 今回はアドオンとして仕上げていきます。 redhologerbera.hatenablog.com 〇bl_info Blenderではアドオンとして正式に登録するためにはbl_infoという辞書形式のデータの定義が…

BlenderPythonでBlenderのバージョンによって処理を分ける

本日はBlenderPython枠です。 BlenderのPythonAPIであるbpyはBlenderのバージョンによって若干の挙動が異なります。 今回はBlenderのバージョンによって処理を変える実装を行います。 〇Blenderのバージョンを取得する まずは条件分岐を行うためにBlenderの…

Blenderでポリゴン数が多い順にオブジェクトを表示する その④ソートモードを作成する

本日はBlenderPython枠です。 時間が空いてしまっていましたが以前Blenderでポリゴン数が多い順にオブジェクトを表示するPythonコードを書きました。 redhologerbera.hatenablog.com 今回はこちらの更新を行います。 〇以前のコード import bpy class OBJECT…

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

本日はBlender枠です。 今回は独自のBlenderツールを作成するうえで必要な、ボタンを押すことでドキュメントなどの指定したURLのウェブブラウザを開く機能を実装します。 〇webbrowser webbrowserはPythonの標準ライブラリに含まれているモジュールです。 We…

BlenderPythonで外部テキストファイルの情報を読み取る

本日はBlender枠です。 今回はBlender外部のPC内の任意のパスにあるテキストファイルから情報を読み取るという実装を行います。今回はBlender3.4で動作確認を行っています。 〇テキストファイルを読み込む アドオンなどを作成する際に外部に保存していたログ…

BlenderPythonで状態に応じて表示されるボタンを変える実装を行う

本日はBlender枠です。 今回はBlenderでボタンを押したらそれをトリガーにUIを更新する実装を行います。 〇Blenderでボタンを押すとボタンが消える実装 Blenderに限らずUIを実装する上で、最初の一回やある条件下にあるときのみ選択可能にするというユースケ…

BlenderPythonでBlenderを終了した際に発火するイベントを実装する

本日はBlender枠です。 BlenderのPythonでソフトを終了した際に発火するイベントを実装していき舞うs。 Blenderを含めたプログラマブル(プログラミング可能)なソフトウェアではユーザーが自在に機能を作ることができます。 しかしループ文や状態を保存する…

3DモデルのUVについてさらに理解する

本日は3Dモデリング枠です。 現在MixedRealityModeringToolsを開発していますが、UVについて難航していますので今回は3DモデルにおけるUVについてもっと理解していきます。 〇UVとは? UVはテクスチャ座標とも呼ばれ、一般的にメッシュに対してテクスチャの…

glTFのファイルフォーマットを覗く

本日は3Dモデリング枠です。 〇glTFフォーマットのモデルの作成 まずはglTFフォーマットのモデルを作成していきます。 BlenderではデフォルトでglTFのバイナリ形式であるglb形式のフォーマットのエクスポートをサポートしています。 今回はデフォルトのCube…

WebGPUについて調べる

本日はグラフィックス学習枠です。 本日筆者はSeattle中心部から北西にあたる海岸沿いのballadeという町に行ってStereoKitの生みの親Nickさんに会っていました。 Nickさんと話す中でグラフィックス関係でWebGPUについて知ったので今回は情報を集めていきます…

UnityC#でキューブを作成しUVについて理解する

本日はMRMT枠です。 今回はUV情報をスクリプトベースでメッシュに組み込む方法を調べていきます。 〇UnityC#でUVを含むメッシュを生成する C#で頂点情報に加えUV情報を基にメッシュを構築する方法は次のようになります。 using System.Collections.Generic; …

MixedRealityModelingToolsその⑩ Blenderから送信するメッシュ情報にUV情報を組み込む

本日は筆者が開発しているMixedRealityModelingTools枠です。 〇MixedRealityModelingToolsとは? MixedRealityModelingToolsとは筆者が個人的に開発しているBlenderのソリューションで、目的としてBlenderからMixedRealityアプリケーション開発ツールと連携…

BlenderのPythonでメッシュからUV情報を取得する

本日はBlenderモデリング枠です。 今回は現在作成しているMixedRealityModelingToolsの開発に向けて調査としてBlender内でメッシュUV情報はどのように扱われているのか?BlenderからUV情報を取得するにはどうすればよいのかを調べていきます。 〇BlenderのUV…

MixedRealityModelingTools その⑧ Blender上でテクスチャの取得とバイナリの送信

本日は先日最初期のβ版リリースをしたMixedRealtiyModelingToolsの機能開発枠です。 〇MixedRealityModelingToolsとは? MixedRealityModelingTools(MRMT)は筆者が開発しているMixedReality空間内での3DCGのデータの取り扱いに関するパッケージです。 Blen…

MixedRealityModelingToolsのβ版をリリースしました。

本日はMRMT枠です。 前々から開発を進めていたMixedRealityModelingToolsのβ版をリリースしましたので紹介をします。 〇リリースページ github.com なお本日時点でデモを想定しているバージョンであり、バグが多々含まれている可能性があります。 またUI等も…

BlenderでPythonを使用してカメラ情報を取得し位置を変える。

本日はBlenderモデリング枠です。 今回はMixedRealityModelingToolsに使用するための技術検証としてBlenderのpythonでBlenderのカメラ情報にアクセスして、編集を行います。 〇Blenderのカメラ情報にアクセスする。 Blenderでカメラオブジェクトを取得するに…

Blenderで選択されマテリアルが持つテクスチャ情報を取得する

本日は昨日に引き続きMixedRealityModelingTools枠です。 現在メッシュやマテリアルの色を送信することができているMixedRealityModelingToolsですが、バージョン1のリリースにテクスチャ情報を含ませたいためこれを行うためのシンプルなコードを記述してい…

Blenderでサーバーを立てMessagePackでメッシュを送信する その⑦マテリアル情報の取得

本日はBlenderモデリング枠です。 本日は現在開発しているMixedRealityModelingToolsの機能開発を行います。 昨日Blenderで現在選択しているオブジェクトのマテリアルを取得するコードを書いていきました。 redhologerbera.hatenablog.com 本日はこれを利用…

BlenderのPythonで現在選択しているオブジェクトの使用しているマテリアルの色情報を取得する

本日はBlenderモデリング枠です。 〇選択しているオブジェクトからマテリアルの数を取得しマテリアル名の名前をリストに格納する マテリアルの情報を取得するためにはまずはマテリアル数を取得し、マテリアル名をリストに格納します。 これはBlenderを含め3D…

Blenderでテキストフィールドを作成し、入力した文字をコンソールに出力するシンプルなアドオンを作成する

本日はBlender枠です。 現在MixedRealityModelingToolsなるBlenderとUnityで相互に情報をやり取りできるパッケージを作成しています。 今回はBlender側の実装する上での基礎的なコードとしてテキストフィールドを表示して、任意の文字をログに出力するような…

BlenderのPythonでサーバーを立てMessagePackでメッシュを送信する MixedRealityModelingToolsその④Unity側のメッシュデータのデシリアライズ

本日は昨日に引きつづき自身が開発中のパッケージMixedRealityModelingTools(仮)の機能紹介を行います。 昨日はUnity側のTCPクライアントの実装を見ていきました。 redhologerbera.hatenablog.com 本日はBlenderから送信されたメッシュデータの処理を解説し…

BlenderのPythonでサーバーを立てMessagePackでメッシュを送信する MixedRealityModelingToolsその②MessagePackを使用したデータの送信

本日はUnity枠です。 現在BlenderからUnity製アプリケーションに向けてネットワーク経由でメッシュ情報を双方向に通信するパッケージを開発しています。 MixedRealityModelingToolsという仮称で開発していますが今回は昨日に引き続きBlender側のコア機能を紹…