投稿

blender4.1 レンダリング画像を左右反転する方法

Quick Edit Pencil

方法: コンポジティングを使用する
レンダリング: 通常通りにシーンをレンダリングします。
コンポジティング: コンポジティングノードを使用して、レンダリング結果を左右反転させることができます。
「コンポジティング」タブに移動し、「Use Nodes」を有効にします。
Image」ノードを追加し、レンダリング結果を接続します。
Transform」ノードを追加し、X軸のスケールを-1に設定します。
最後に「Composite」ノードに接続します。


コンポジティングノードでの反転のしかたを初心者にもわかるように詳しく教えて

.
GPT-4o mini



Blenderのコンポジティングノードを使用して画像を左右反転させる方法を、初心者向けに詳しく説明します。以下の手順に従ってください。


ステップ1: シーンをレンダリングする
シーンを作成: Blenderでシーンを作成し、レンダリングしたいオブジェクトを配置します。
レンダリング: F12キーを押してシーンをレンダリングします。レンダリングが完了すると、画像が表示されます。

ステップ2: コンポジティングタブに移動
コンポジティングタブを開く: 上部のタブから「コンポジティング」を選択します。
ノードを使用する: Use Nodes」にチェックを入れます。これにより、ノードエディタが表示されます。

ステップ3: ノードを設定する
レンダー結果ノードを追加:
右クリックして「Add」メニューを開き、「Input」から「Render Layers」を選択します。これがレンダリング結果を取得するノードです。
変換ノードを追加:
再度右クリックして「Add」メニューを開き、「Distort」から「Transform」を選択します。これが画像を変換するためのノードです。
コンポジットノードを追加:
もう一度右クリックして「Add」メニューを開き、「Output」から「Composite」を選択します。これが最終的な出力ノードです。

ステップ4: ノードを接続する
ノードを接続:
Render Layers」ノードの出力(右側の出力ポイント)を「Transform」ノードの入力(左側の入力ポイント)に接続します。
Transform」ノードの出力を「Composite」ノードの入力に接続します。

ステップ5: 反転設定を行う
Transformノードの設定:
Transform」ノードを選択し、プロパティパネルで「X Scale」の値を-1に設定します。これにより、画像が左右反転します。

ステップ6: レンダリング結果を確認する
ノードを確認: ノードが正しく接続されていることを確認します。
レンダリング: F12キーを押して再度レンダリングします。コンポジティングノードを通じて、左右反転された画像が表示されるはずです。
ステップ7: 画像を保存する
画像を保存: レンダリング結果が表示されたら、Imageメニューから「Save As」を選択して、反転された画像を保存します。
これで、Blenderのコンポジティングノードを使用して画像を左右反転させる方法が完了です。もし何か不明な点があれば、遠慮なく質問してください!<
light
dark
night-bule
vibrant-ink
wed

blender4.1 マテリアルが設定されているオブジェクトの一覧を取得するスクリプト

Quick Edit Pencil

GPT-4o mini


Blender 4.1では、Pythonスクリプトを使用してシーン内のオブジェクトを操作することができます。以下のスクリプトは、特定のプレフィックスを持つマテリアルが適用されているメッシュオブジェクトの一覧を取得し、コンソールに表示するものです。

python

コードをPython Consoleにコピーして使う。
import bpy

# 検索するマテリアル名のプレフィックス
material_prefix = "Material.020"

# マテリアルが適用されているオブジェクトをリストアップ
found_objects = False  # オブジェクトが見つかったかどうかのフラグ
for obj in bpy.data.objects:
    if obj.type == 'MESH':  # メッシュオブジェクトのみを対象
        for mat in obj.data.materials:
            if mat and mat.name.startswith(material_prefix):  # プレフィックスで始まるか確認
                print(f"オブジェクト名: {obj.name} に {mat.name} が適用されています。")
                found_objects = True

if not found_objects:
    print(f"{material_prefix} で始まるマテリアルが適用されているオブジェクトは見つかりませんでした。")
スクリプトの説明 モジュールのインポート: import bpy: BlenderPython APIを使用するために、bpyモジュールをインポートします。 マテリアル名のプレフィックス設定: material_prefix = "Material.020": 検索対象とするマテリアル名のプレフィックスを設定します。この例では「Material.020」で始まるマテリアルを探します。 オブジェクトのリストアップ: found_objects = False: オブジェクトが見つかったかどうかを示すフラグを初期化します。 for obj in bpy.data.objects: Blenderのデータブロックからすべてのオブジェクトをループ処理します。 メッシュオブジェクトのフィルタリング: if obj.type == 'MESH': オブジェクトがメッシュタイプであるかを確認します。メッシュオブジェクトのみを対象とします。 マテリアルの確認: for mat in obj.data.materials: オブジェクトに適用されているすべてのマテリアルをループ処理します。 if mat and mat.name.startswith(material_prefix): マテリアルが存在し、指定したプレフィックスで始まるかを確認します。 結果の表示: print(f"オブジェクト名: {obj.name} に {mat.name} が適用されています。"): 条件を満たす場合、オブジェクト名とマテリアル名をコンソールに表示します。 found_objects = True: オブジェクトが見つかったことを示すためにフラグを更新します。 オブジェクトが見つからなかった場合の処理: if not found_objects: もしオブジェクトが見つからなかった場合、適切なメッセージを表示します。 このスクリプトを使用することで、特定のマテリアルが適用されているメッシュオブジェクトを簡単にリストアップすることができ、Blenderでの作業を効率化することができます。<
light
dark
night-bule
vibrant-ink
wed

Blender 4.1 マテリアルスロット削除(名前指定と空のマテリアルスロット):スクリプトを使った簡単な手法

Quick Edit Pencil


名前指定する場合

WhiteMaterialから始まる名前のスロットを除去) GPT-4o mini Blender 4.1でアクティブコレクション内のすべてのオブジェクトをループし、マテリアルスロットから名前が 'WhiteMaterial' で始まるものを削除するためのスクリプトは以下のようになります。 python コードをコピー
import bpy

# アクティブコレクションを取得
active_collection = bpy.context.view_layer.active_layer_collection

# アクティブコレクション内のすべてのオブジェクトをループ
for obj in active_collection.collection.objects:
    # オブジェクトがメッシュであることを確認
    if obj.type == 'MESH':
        # マテリアルスロットを逆順でループ(削除するため)
        for i in range(len(obj.material_slots) - 1, -1, -1):
            # マテリアルスロットの名前を取得
            material_slot = obj.material_slots[i]
            if material_slot.material and material_slot.material.name.startswith('WhiteMaterial'):
                # オブジェクトをアクティブにする
                bpy.context.view_layer.objects.active = obj
                # マテリアルスロットを削除
                bpy.ops.object.material_slot_remove()
このスクリプトをBlenderのスクリプトエディタにコピーして実行すると、アクティブコレクション内のすべてのメッシュオブジェクトのマテリアルスロットから、名前が 'WhiteMaterial' で始まるものが削除されます。注意点として、マテリアルスロットを削除する際には、オブジェクトをアクティブにする必要があるため、その部分も含めています。

空のマテリアルスロット除去

GPT-4o mini 空のマテリアルスロットを削除するスクリプトは以下の通りです。このスクリプトでは、マテリアルスロットが空であるかどうかを確認し、空であれば削除します。 python コードをコピー
import bpy

# アクティブコレクションを取得
active_collection = bpy.context.view_layer.active_layer_collection

# アクティブコレクション内のすべてのオブジェクトをループ
for obj in active_collection.collection.objects:
    # オブジェクトがメッシュであることを確認
    if obj.type == 'MESH':
        # マテリアルスロットを逆順でループ(削除するため)
        for i in range(len(obj.material_slots) - 1, -1, -1):
            # マテリアルスロットの取得
            material_slot = obj.material_slots[i]
            # マテリアルスロットが空であるか確認
            if material_slot.material is None:
                # オブジェクトをアクティブにする
                bpy.context.view_layer.objects.active = obj
                # マテリアルスロットを削除
                bpy.ops.object.material_slot_remove()
このスクリプトをBlenderのスクリプトエディタにコピーして実行すると、アクティブコレクション内のすべてのメッシュオブジェクトの空のマテリアルスロットが削除されます。空のマテリアルスロットは、material_slot.material None である場合に該当します。<
GPT-4o miniへの命令文
blender4.1のアクティブコレクション内のすべてのオブジェクトをループしてオブジェクトのマテリアルスロットから 'WhiteMaterial' で始まるものを削除する。マテリアルスロットを削除する命令は次を使う事。bpy.ops.object.material_slot_remove() ただし、bpy.ops.object.material_slot_remove({'active_object': obj})のような引数を書くとエラーが出るので、引数を使わない方法で書いてほしい。ついでに、空のマテリアルスロットを削除するスクリプトに改造したスクリプトも書き出して。
light
dark
night-bule
vibrant-ink
wed

blender フリースタイル設定

Quick Edit Pencil
img







 
light-monochrome
light
dark
night-bule
vibrant-ink
wed

blender4.1 スクリプトをキーボードショートカットに登録する

Quick Edit Pencil

「# ここに実行したいスクリプトの内容を記述」に以下のスクリプトを登録したい。

... script ...


GPT-4o mini



指定されたスクリプトをBlenderのオペレーターとして登録し、キーボードショートカットを設定する手順を以下に示します。このスクリプトは、現在のシーンのカメラやコレクション名を使って、レンダリングファイルのパスを設定し、レンダリングを実行します。

スクリプトをオペレーターとして登録する手順
Blenderのテキストエディタを開く:
Blenderを開き、テキストエディタを表示します。
スクリプトを入力:
以下のコードをテキストエディタに入力します。
python

コードをコピー
import bpy
import os

class RenderWithCustomPathOperator(bpy.types.Operator):
    bl_idname = "render.custom_render"
    bl_label = "Render with Custom Path"

    def execute(self, context):
        # 現在のシーンを取得
        scene = bpy.context.scene

        # 現在のシーンのカメラを取得
        camera = scene.camera

        # シーン名を取得
        scene_name = scene.name

        # カメラ名を取得
        camera_name = camera.name if camera else "NoCamera"

        # アクティブなコレクションを取得
        active_collection = bpy.context.view_layer.active_layer_collection
        active_collection_name = active_collection.name if active_collection else "NoCollection"

        # レンダリング設定を取得
        render = bpy.context.scene.render

        # render.filepathが設定されているか確認
        if not render.filepath:
            self.report({'ERROR'}, "Error: render.filepath is not set. Aborting.")
            return {'CANCELLED'}
        else:
            # ファイル名を除いたパスを取得
            directory = os.path.dirname(render.filepath)

            # 新しいパスを設定
            new_filepath = os.path.join(directory, f"{active_collection_name}_{camera_name}_{scene_name}.png")
            render.filepath = new_filepath

            # レンダリングを実行
            bpy.ops.render.render(write_still=True)
            return {'FINISHED'}

def register():
    bpy.utils.register_class(RenderWithCustomPathOperator)

def unregister():
    bpy.utils.unregister_class(RenderWithCustomPathOperator)

if __name__ == "__main__":
    register()
スクリプトを実行:
テキストエディタの「Run Script」ボタンをクリックして、スクリプトを実行します。
キーボードショートカットを設定:
Blenderの「Edit」メニューから「Preferences」を選択します。
Keymap」タブを開きます。
3D View」セクションを展開し、「3D View」または「3D View (Global)」の下にある「Add New」ボタンをクリックします。
新しいショートカットを追加し、以下のように設定します:
Identifier: render.custom_render
Key: 実行したいキー(例: RF12など)
Type: キーのタイプ(例: PRESSRELEASEなど)
設定を保存する:
設定が完了したら、Preferencesウィンドウを閉じます。
スクリプトを実行する: 3Dビューに戻り、設定したキーボードショートカットを押すと、指定された条件に基づいてレンダリングが実行されます。 これで、指定されたスクリプトをBlenderで実行するためのオペレーターとキーボードショートカットが設定されました。何か他に質問があれば、お知らせください!<
参考
3dcgソフトのblender4.1で特定のスクリプトを実行するためのキーボードショートカットを作りたい。どうする

.
GPT-4o mini



Blender 4.1で特定のスクリプトを実行するためのキーボードショートカットを作成する手順は以下の通りです。

スクリプトを作成する:
Blenderのテキストエディタを開き、実行したいスクリプトを入力します。
スクリプトを保存します(例: my_script.py)。
スクリプトを登録する:
スクリプトを実行するためのオペレーターを定義します。以下のようなコードを使用して、スクリプトをオペレーターとして登録します。
python

コードをコピー
import bpy

class MyCustomOperator(bpy.types.Operator):
    bl_idname = "wm.my_custom_operator"
    bl_label = "My Custom Operator"

    def execute(self, context):
        # ここに実行したいスクリプトの内容を記述
        print("スクリプトが実行されました")
        return {'FINISHED'}

def register():
    bpy.utils.register_class(MyCustomOperator)

def unregister():
    bpy.utils.unregister_class(MyCustomOperator)

if __name__ == "__main__":
    register()
キーボードショートカットを設定する:
Blenderの「Edit」メニューから「Preferences」を選択します。
Keymap」タブを開きます。
3D View」や「Text Editor」など、ショートカットを設定したいエリアを選択します。
Add New」ボタンをクリックして新しいショートカットを追加します。
新しいエントリの「Identifier」に先ほど定義したオペレーターのID(例: wm.my_custom_operator)を入力します。
Key-binding」フィールドで希望のキーを設定します。
設定を保存する:
Preferencesウィンドウを閉じる前に、設定を保存することを忘れないでください。
これで、設定したキーボードショートカットを押すことで、特定のスクリプトを実行できるようになります。<
light
dark
night-bule
vibrant-ink
wed

Googleスプレッドシートで半角数字を漢数字の尺寸表示にするには?

Quick Edit Pencil
カスタム関数を使用する
function convertToShakuSun(value) {
var shaku = Math.floor(value);
var sun = Math.round((value - shaku) * 10);
var kanjiNumbers = ["〇", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"];
var shakuKanji = kanjiNumbers[shaku];
var sunKanji = kanjiNumbers[sun];
return shakuKanji + "尺" + sunKanji + "寸";
}
使い方は下記を参照 Gemini
googleスプレッドシートで2.5を漢数字で二尺五寸として表示したい。どうすれば良い


Googleスプレッドシートで2.5を二尺五寸と表示するには、以下の方法があります。

方法1:表示形式をカスタマイズする

セルを選択し、右クリックして「表示形式」>「数値」>「カスタム数値形式」を選択します。

「カスタム数値形式」ダイアログボックスで、以下の形式を入力します。

#.#"尺"0"寸"
「適用」をクリックします。

方法2TEXT関数とIF関数を使用する

表示したいセルに、以下の数式を入力します。

Excel

=TEXT(INT(A1),"[DBNum4]G/標準")&"尺"&TEXT(MOD(A1,1)*10,"[DBNum4]G/標準")&"寸"
A1は、2.5が入力されているセルです。必要に応じて変更してください。
INT関数は、数値の整数部分を返します。
MOD関数は、数値の余りを返します。
TEXT関数は、数値を指定された形式の文字列に変換します。
[DBNum4]は、数値を漢数字で表示する形式です。
方法3:スクリプトを使用する

「ツール」>「スクリプトエディタ」を選択します。

スクリプトエディタで、以下のスクリプトを入力します。

JavaScript

function convertToShakuSun(value) {
var shaku = Math.floor(value);
var sun = Math.round((value - shaku) * 10);
var kanjiNumbers = ["〇", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"];
var shakuKanji = kanjiNumbers[shaku];
var sunKanji = kanjiNumbers[sun];
return shakuKanji + "尺" + sunKanji + "寸";
}
スクリプトを保存し、名前を付けます(例:convertToShakuSun)。 スプレッドシートに戻り、表示したいセルに以下の数式を入力します。 Excel =convertToShakuSun(A1) A1は、2.5が入力されているセルです。必要に応じて変更してください。 どの方法を選ぶべきか 表示形式のカスタマイズは、最も簡単な方法ですが、小数点以下の処理が限られています。 TEXT関数とIF関数を使用する方法は、より柔軟な処理が可能ですが、数式が複雑になる場合があります。 スクリプトを使用する方法は、最も柔軟な処理が可能ですが、プログラミングの知識が必要です。 補足 尺と寸の単位は、日本の伝統的な長さの単位です。1尺は約30.3cm1寸は約3.03cmです。 上記の方法では、小数点以下を四捨五入して寸を計算しています。必要に応じて、切り上げや切り捨てなどの処理を追加してください。<
GPT-4o mini
googleスプレッドシートで2.5を二尺五寸として表示したい。どうすれば良い

.
GPT-4o mini


Googleスプレッドシートで「2.5」を「二尺五寸」と表示するには、カスタム数式を使用する方法があります。以下の手順で設定できます。

セルに数値を入力: まず、例えばセルA1に「2.5」と入力します。
別のセルに表示形式を設定: 次に、別のセル(例えばB1)に以下の数式を入力します。
plaintext

コードをコピー
=TEXT(INT(A1),"0") & "尺" & TEXT(ROUND((A1-INT(A1))*10),"0") & "寸"
この数式は、整数部分を「尺」として、少数部分を10倍して「寸」として表示します。 結果を確認: B1セルには「二尺五寸」と表示されるはずです。 この方法で、数値を尺寸の形式に変換して表示することができます。必要に応じて、他の数値にも同様の数式を適用できます。 漢数字にできますか . GPT-4o mini はい、Googleスプレッドシートで数値を漢数字に変換することも可能です。以下の手順で「2.5」を「二尺五寸」と表示する方法を説明します。 セルに数値を入力: 例えば、セルA1に「2.5」と入力します。 漢数字に変換する数式を入力: 別のセル(例えばB1)に以下の数式を入力します。 plaintext コードをコピー
=CHOOSE(INT(A1),"零","一","二","三","四","五","六","七","八","九") & "尺" & CHOOSE(ROUND((A1-INT(A1))*10,0),"零","一","二","三","四","五","六","七","八","九") & "寸"
この数式では、整数部分と小数部分をそれぞれ漢数字に変換し、「尺」と「寸」を付け加えています。 結果を確認: B1セルには「二尺五寸」と表示されるはずです。 この方法で、数値を漢数字の形式に変換して表示することができます。必要に応じて、他の数値にも同様の数式を適用できます。 1.0とか0.5にも対応できますか . GPT-4o mini はい、1.00.5などの数値にも対応できるように、数式を少し修正する必要があります。以下の手順で、0.0から9.9までの数値を漢数字で「尺寸」形式に変換する方法を説明します。 セルに数値を入力: 例えば、セルA1に「1.0」や「0.5」と入力します。 漢数字に変換する数式を入力: 別のセル(例えばB1)に以下の数式を入力します。 plaintext コードをコピー
=IF(A1=0, "零尺零寸", CHOOSE(INT(A1),"零","一","二","三","四","五","六","七","八","九") & "尺" & CHOOSE(ROUND((A1-INT(A1))*10,0),"零","一","二","三","四","五","六","七","八","九") & "寸")
この数式では、数値が0の場合には「零尺零寸」と表示し、それ以外の場合には整数部分と小数部分を漢数字に変換して「尺」と「寸」を付け加えています。 結果を確認: B1セルには、例えば「一尺零寸」や「零尺五寸」と表示されるはずです。 この方法で、0.0から9.9までの数値を漢数字の形式に変換して表示することができます。必要に応じて、他の数値にも同様の数式を適用できます。<
light
dark
night-bule
vibrant-ink
wed

Googleスプレッドシート 名前付き範囲の並べ替えマクロ 

Quick Edit Pencil
マクロを記録して名前付き範囲Table1に書き換えた
/** @OnlyCurrentDoc */

function Table1SortClear() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange("Table1").activate();
  spreadsheet.getActiveRange().offset(1, 0, spreadsheet.getActiveRange().getNumRows() - 1).sort({column: 1, ascending: true});
};

function Table1Sort() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange("Table1").activate();
  spreadsheet.getActiveRange().offset(1, 0, spreadsheet.getActiveRange().getNumRows() - 1).sort([{column: 9, ascending: true}, {column: 2, ascending: true}]);
};
AIに聞いてみた
googleスプレッドシートのマクロを書きたい。名前付き範囲「Table1」を取得して並べ替えを行いたい。並べ替え列は9列と2列を昇順です。尚、table1の一行目はタイトルなのでソートからは外してください。

.
GPT-4o mini



Google スプレッドシートで、名前付き範囲「Table1」を取得し、9列(I列)と2列(B列)を基準に昇順で並べ替えるマクロを作成するには、以下の Google Apps Script を使用できます。このスクリプトは、1行目をタイトルとして扱い、2行目以降を並べ替えます。

javascript

コードをコピー
function sortNamedRange() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var namedRange = sheet.getRange("Table1"); // 名前付き範囲「Table1」を取得
  var data = namedRange.getValues(); // データを取得

  // 1行目をタイトルとして除外し、2行目以降を並べ替え
  var header = data[0]; // タイトル行
  var body = data.slice(1); // データ部分(タイトル行を除外)

  // 並べ替え(9列目と2列目を基準に昇順)
  body.sort(function(a, b) {
    // 9列目(I列)で比較
    if (a[8] === b[8]) {
      // 9列目が同じ場合は2列目(B列)で比較
      return a[1] > b[1] ? 1 : -1; // 昇順
    }
    return a[8] > b[8] ? 1 : -1; // 昇順
  });

  // 並べ替えたデータを元の範囲に書き戻す
  namedRange.offset(1, 0, body.length, body[0].length).setValues(body);
}
スクリプトの使い方 Google スプレッドシートを開きます。 メニューから「拡張機能」→「Apps Script」を選択します。 新しいプロジェクトが開いたら、上記のコードをコピーして貼り付けます。 スクリプトを保存します(名前を付ける必要があります)。 sortNamedRange 関数を実行します。 このスクリプトは、名前付き範囲「Table1」のデータを取得し、1行目をタイトルとして除外した後、9列目(I列)と2列目(B列)を基準に昇順で並べ替えます。並べ替えた結果は、元の範囲に書き戻されます。