本日はBlender枠です。
筆者は現在大学で3DCGの指導に当たっていますが、特に初学者の学生にとってデータ名に日本語を付けるということはよくある問題です。

日本語が含まれる場合Git等の管理システムの問題やUnrealEngine,Mayaなどのシステムとして日本語を受け付けないツールでのエラーなど様々な問題が発生します。
しかしながら特に初学者は日本語が含まれていても気が付きにくいという問題があるため今回はPythonで検出システムを作成しました。
〇コード
import bpy
import re
# 日本語の文字を判定する正規表現パターン
japanese_pattern = re.compile(r'[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uF900-\uFAFF]')
def contains_japanese(text):
return japanese_pattern.search(text) is not None
def check_scene_for_japanese():
# シーン内のすべてのオブジェクトをチェック
for obj in bpy.data.objects:
if contains_japanese(obj.name):
print(f"オブジェクト '{obj.name}' に日本語が含まれています。")
# オブジェクトのマテリアルをチェック
for mat_slot in obj.material_slots:
if contains_japanese(mat_slot.name):
print(f"オブジェクト '{obj.name}' のマテリアル '{mat_slot.name}' に日本語が含まれています。")
# シーン内のすべてのマテリアルをチェック
for mat in bpy.data.materials:
if contains_japanese(mat.name):
print(f"マテリアル '{mat.name}' に日本語が含まれています。")
# シーン内のすべてのメッシュをチェック
for mesh in bpy.data.meshes:
if contains_japanese(mesh.name):
print(f"メッシュ '{mesh.name}' に日本語が含まれています。")
# 実行
check_scene_for_japanese()
ここでは日本語の検知のためにre.compile(r'[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uF900-\uFAFF]')を使用しています。
これはunicordの範囲にある文字をマッチさせるものです。
\u3040-\u30ff: ひらがなとカタカナ \u3400-\u4dbf: CJK統合漢字拡張A \u4e00-\u9fff: CJK統合漢字 \uF900-\uFAFF: CJK互換漢字
これによって日本語が含まれるデータを検知しています。
このコードを実行するとコンソールウィンドウに以下のログがでます。

以上がBlenderで日本語名が含まれるデータを検出するコードです。
将来的には学生がデータの形式などを確認するために使用していきたいです。