夜風のMixedReality

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

Python

BlenderPyhonを用いて.mp3音源をハッシュ値名で変換する。

本日はPython枠です。 Unityやその他ツールなどで開発するために近年では生成AIなどで音源を創ることができるようになりましたが、ハッシュ値で名前を付けて.mp3の形式で大量の音源を処理したいという状況がありました。 今回はBlenderを使用して外部のツー…

Geminiを用いてBlenderで独自プログラムを実行する

本日はBlender、Python枠です。 筆者は元エンジニアでもありプログラミングになれていますが、最近はAIを用いたViveCodingばかりを行っています。 AIを用いることである程度の知識であっても簡単にプログラムを作成、実行することができ、業務効率化などを行…

BlenderPythonで選択しているメッシュの面積を求める

本日はBlenderPython枠です。 今回はBlenderPythonで選択中のメッシュの面積を求めていきます。 〇環境 ・Windows11PC ・Blender4.4 〇面積の求め方 三角形の面積は、縦×横/2ですが、3次元上の3つの頂点(𝐴(𝑥1,𝑦1,𝑧1), 𝐵(𝑥2,𝑦2,𝑧2), 𝐶(𝑥3,𝑦3,𝑧_3))を使用して…

Open3Dでジオメトリ数を判定する

本日はPython枠、モデリング枠です。 今回はOpen3Dでインプットした3Dモデルからジオメトリ数を取得します。 〇環境 ・Windows11PC ・Anaconda3 ・Python3.11 〇ジオメトリとは? ジオメトリとは3Dモデルのメッシュにおけるデータヒエラルキーの一つです。 3…

obj形式のファイルフォーマットを理解する② フェイスの構造理解とobjファイルをcsvに変換する

本日は3Dモデリング枠です。 最近pythonを持ちいてOpen3DのライブラリでBlendetやMayaにあるような機能の独自実装を行いながら3DCGに関しての知識を深めています。 その中で一度open3dライブラリで処理をしてエクスポートしたモデルを再度Open3Dライブラリで…

Open3Dを用いて重複頂点を削除する

本日はPython枠です。 Open3Dでは様々な機能が提供されていますが、今回はこの中から重複頂点を削除していきます。 〇環境 ・Windows11PC ・AnacondaPrompto(Anaconda3) ・Python 3.11 〇重複頂点とは? 重複頂点はその名の通り同一座標上で頂点が重なってい…

Open3Dを使用してメッシュのブーリアンを行う

本日はPython枠です。 先日Open3Dを用いたポリゴン削減を行いました。 redhologerbera.hatenablog.com 今回はブーリアン演算を実装していきます。 先日よりはてなブログのサーバーが不具合があったようで2日ぶりの記事になります。 〇環境 ・Windows11PC ・…

ZyphraのZonosのAPIに関して調べる その③

本日はAI枠です。 先日新型のTextToSpeechサービスのZyphraのZonosを触っていました。 redhologerbera.hatenablog.com サイドメニューを見るとSettingsの中にAPIKeysおよびAPI Documentationが存在しました。 前回はPythonで生成する点までを行いました。 re…

Pythonを用いてOBJのモデルをデシメートを行う

本日はPython、3Dモデリング枠です。 BlenderやMayaといった3Dモデリングに特化したDCCツールはPythonで動いており、Pythonライブラリを使用したプログラマブルな機能へアクセスすることができます。 この理由はC#などでは直接C++コードを読み込むことが一般…

ZyphraのZonosのAPIに関して調べる その②

本日はAI枠です。 先日新型のTextToSpeechサービスのZyphraのZonosを触っていました。 redhologerbera.hatenablog.com サイドメニューを見るとSettingsの中にAPIKeysおよびAPI Documentationが存在しました。 今回はこのAPIを使用すれば何ができるのか?見て…

BlenderPythonで任意のショートカットキーで実行可能な処理を実装する

本日はBlender Python枠です。 〇環境 ・Windows11PC ・Blender4.1 〇ショートカットの変更 Blenderでショートカットキーの変更を行うためにはプリファレンスのキーマップに登録することが一般的です。 〇アドオンの基礎 以下のコードはBlenderアドオンの基…

BlenderPythonで任意のショートカットキーで面の向きを可視化する

本日はBlender枠です。 Blenderではビューポートオーバーレイの面の向きにチェックを入れることで面の向きを可視化することができます。 これはエクスポート前に必ずチェックをする機能ですが、こまめに使用するためにはGUIを開いてチェックを入れてと何かと…

BlenderPythonでジオメトリごとにオブジェクトを分離する

本日はBlender枠です。 〇環境 ・Blender4.1 ・Windows11PC 〇ジオメトリごとにオブジェクトを分離する Blenderではジオメトリノードや配列モディファイアなどを使用することでジオメトリを大量に配置することができます。 この場合はジオメトリとしては分離…

BlenderPythonでオブジェクトにアニメーションが含まれているか調べる

本日はBlender Python枠です。 タイトルの通りアニメーションを持つオブジェクトが存在するかを検知します。 〇環境 ・Windows11PC ・Blender4.1 〇オブジェクトがアニメーションを持つかの判定 アニメーション事態を取得するにはactionを検知します。 _anim…

usdzモデルに含まれているtag画像をpng画像に書き換える

本日はモデリング枠です。 ZBrushなどのソフトウェアで作られた3Dモデルは内部の画像フォーマットがtagが用いられていることがあります。 こういった場合は一度Blenderなどを使用してテクスチャをpngなどに書き換えなければApple製品でのAR体験時にエラーが…

MayaでPythonを使用してビューポート上の設定をリセットしてテクスチャを表示する

本日はMaya,Python枠です。 筆者は大学で3DCGについて指導に当たっていますが、Mayaに限らずソフトウェアのUIや設定がデフォルトから変わってしまっている状態の学生さんがよくいます。 彼らが意図してUIやビューポートをカスタマイズしているのであれば…

BlenderPythonでコードから動的にpip installする

本日はBlender,Python枠です。 今回はBlenderのPython内で動的にpip installを行う方法を知りましたので残していきます。 〇環境 ・Windows 11PC ・Blender4.1 〇PythonコードからPip install Pythonコード内からPip installを行うためには次のような関数を…

Blenderで日本語名が含まれるデータを検出するPythonコード

本日はBlender枠です。 筆者は現在大学で3DCGの指導に当たっていますが、特に初学者の学生にとってデータ名に日本語を付けるということはよくある問題です。 日本語が含まれる場合Git等の管理システムの問題やUnrealEngine,Mayaなどのシステムとして日本語を…

Blenderで筆者にとって便利なアドオンを作る その①レンダリング設定の保存、読み込み

本日はBlender枠です。 〇環境 ・Blender4.1 ・Windows11PC 〇レンダリング設定のGUI 今回は以前作成した外部にレンダリング設定を保存しておいて読み込むスクリプトをGUIを作成してより使いやすくしていきます。 redhologerbera.hatenablog.com redhologerb…

Blenderでレンダリング設定を書き換えて自動的にベイクを行う

本日はBlender枠です。 〇環境 ・Blender4.1 ・Windows11PC 〇Pythonスクリプトからベイクを行う 先日Pythonスクリプト経由でレンダリング設定を書き換えました。 redhologerbera.hatenablog.com 本日はCyclesエンジンでのみ実行可能なベイクをPythonベース…

Pythonでローカルディレクトリからライブラリを読み込む

本日はPython枠です。 今回はPythonでローカルディレクトリ内にあるライブラリを読み込んでいきます。 通常自分自身の環境でnumpyなどPythonの外部ライブラリを使用したい場合は仮想環境を構築してpip installで導入します。 しかし場合によっては環境ごと配…

BlenderのVR Scene Inspectionの実装を見る その①

本日はBlender枠です。 BlenderではOpenXR規格を使用してVRと接続することができます。 〇環境 ・Windows11PC ・Blender4.1 〇VR Scene Inspectionの場所 VRSceneInspectionのPythonコードのパスは以下になります。 C:\Program Files\Blender Foundation\Ble…

BlenderでUSDZのエクスポートを行うアドオンを作る その①

本日はBlenderPython枠です。 Blenderでは様々なフォーマットのファイルに出力をサポートしています。 今回はUSDZへのエクスポートに関するテーマです。 〇USDZについて USDZ(.usdz)はUniversal Scene Description形式のファイルフォーマットの中でZ形式での…

BlenderPythonで現在のオブジェクト数、非表示になっているオブジェクト数をコンソールに出力する

本日はBlenderPython枠です。 〇環境 ・Blender4.1 ・Windows11PC 〇現在のシーンにあるオブジェクト数を取得する 現在のコードを取得するには次のコードを使用します。 import bpy # 全てのオブジェクト数を取得 total_objects = len(bpy.data.objects) pri…

ヒッパルコス星表とBlenderでの使用方法 その②BlenderPythonでCSVファイルを読み込む

本日はPython枠です。 前回に引き続きヒッパルコス星表をBlenderで使用します。 前回はヒッパルコス星表についてみていきました。 redhologerbera.hatenablog.com 今回はBlenderでこのデータを使用するためにCSVファイルを読み込んでいきます。 〇環境 ・Win…

SubstancePainterでPythonコードを実行する

本日はSubstance枠です。 SubstancePainterはBlender同様にPythonコードを実行して自身のプラグインを作成することができます。 今回はどのようにPythonAPIが提供されておりどのように実行するのかについて軽く見ていきます。 〇環境 ・Windows 11PC ・Subst…

Blender Pythonであるオブジェクトに対して別のオブジェクトの向きを向ける

本日はBlender枠です。 今回はBlender Pythonを使用してあるオブジェクトの向きをもう一つのオブジェクトに向ける実装を行っていきます。 〇環境 ・Windows11 ・Blender 4.1 〇最初に選択したオブジェクトに2つ目に選択したオブジェクトを向ける 今回は次の…

Blender Pyhonで選択中の複数オブジェクトを順に取得する

本日はBlender Python枠です。 BlenderではオブジェクトモードでShiftキーを押しながらオブジェクトを選択すること複数のオブジェクトを選択することができます。 結合(Ctrlキー+Jキー)やウェイトペイントの転写など一部の機能は最後に選択したオブジェクト…

BlenderPythonを使用して実行中のPCのスペックを取得する

本日はBlenderPython枠です。 前回Pythonを使用してCPUやOSの情報を取得しました。 redhologerbera.hatenablog.com しかしながらPythonでは通常psutilやGPUtilなどのライブラリをしようしない場合GPUなどの情報にアクセスすることはハードルが高いです。 と…

Blender Pythonで使用しているPCのシステム情報をログとして出力する

本日はPython枠です。 今年度より筆者は教育機関で教員としてのキャリアを積み始めたのですが、IT系の指導においてトラブルはつきものです。 そのトラブル時に使用しているPCのスペックが非常に重要な情報になります。 今回は学生さんにトラブル時にPythonコ…