Wie erstelle ich die UV-Rastertextur mit Python?

Aug 22 2020

Wie erstellt man die generierte „UV Grid“ Textur mit Hilfe der Blender Python API?

Antworten

2 brockmann Aug 22 2020 at 17:57

Entweder ein Schachbrett erzeugen und die Pixel einem neuen Bilddatenblock zuweisen oder einfach aufrufen bpy.ops.image.new()und übergeben UV_GRID:

Ein Nachteil bei der Verwendung des Operators ist, dass Sie einen zuverlässigen (eindeutigen) Namen für den Bilddatenblock angeben müssten, da er sonst automatisch in Untitled.001, Untitled.002... umbenannt wird, da Blender mit Daten umgeht:

import bpy
import secrets

# Generate "unique" name
image_name = secrets.token_hex(5)

# Call the operator 
bpy.ops.image.new(
        name=image_name, 
        width=1024, 
        height=1024, 
        color=(0.0, 0.0, 0.0, 1.0), 
        alpha=True, 
        generated_type='UV_GRID', # BLANK, COLOR_GRID
        float=False, 
        use_stereo_3d=False, 
        tiled=False
    )

# Get the image from data blocks
image = bpy.data.images.get(image_name)

# Display the result
if image:
    bpy.ops.screen.userpref_show('INVOKE_DEFAULT')
    # Change area type
    area = bpy.context.window_manager.windows[-1].screen.areas[0]
    area.type = 'IMAGE_EDITOR'

    # Assign the image
    bpy.context.area.spaces.active.image = image

Verwandt:

  • Ist es möglich, Bilddaten zu erstellen und aus einem Skript in eine Datei zu speichern?
  • Wie öffnet man ein Bildbearbeitungsfenster und zeigt eine Bilddatei darin an?