added blender export script
This commit is contained in:
parent
5b67b9b934
commit
34f71d0238
3 changed files with 71 additions and 1 deletions
|
|
@ -1 +0,0 @@
|
||||||
assets/example.gltf
|
|
||||||
1
example/aframe/sandbox/index.glb
Symbolic link
1
example/aframe/sandbox/index.glb
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
assets/index.glb
|
||||||
70
example/assets/index.py
Normal file
70
example/assets/index.py
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
#
|
||||||
|
# This is a convenient way to convert the scene to lowpoly
|
||||||
|
# (by adding decimate-modifiers)
|
||||||
|
# and then exporting a gltf to to <blenderdocument>.glb
|
||||||
|
#
|
||||||
|
# All this is done automatically when saving the blender file
|
||||||
|
#
|
||||||
|
import bpy
|
||||||
|
import os
|
||||||
|
from bpy_extras.io_utils import ImportHelper
|
||||||
|
|
||||||
|
# uncomment below in case you want to hardcode the exported filename
|
||||||
|
data = {
|
||||||
|
#gltf_file="/some/path/foo.index.glb"
|
||||||
|
}
|
||||||
|
|
||||||
|
def notify(message = "", title = "Message Box", icon = 'INFO'):
|
||||||
|
def draw(self, context):
|
||||||
|
self.layout.label(text=message)
|
||||||
|
bpy.context.window_manager.popup_menu(draw, title = title, icon = icon)
|
||||||
|
|
||||||
|
# redirect print to all consoles
|
||||||
|
def print(data):
|
||||||
|
for window in bpy.context.window_manager.windows:
|
||||||
|
screen = window.screen
|
||||||
|
for area in screen.areas:
|
||||||
|
if area.type == 'CONSOLE':
|
||||||
|
override = {'window': window, 'screen': screen, 'area': area}
|
||||||
|
bpy.ops.console.scrollback_append(override, text=str(data), type="OUTPUT")
|
||||||
|
|
||||||
|
|
||||||
|
# Function to add Decimate Modifier to objects without one (except those in the exclusion list)
|
||||||
|
def add_decimate_modifier_to_objects():
|
||||||
|
for obj in bpy.data.objects:
|
||||||
|
print(obj.type)
|
||||||
|
if obj is not None and (obj.type == 'FONT' or (obj.type == 'MESH' and len(obj.data.polygons) > 8)):
|
||||||
|
if not obj.modifiers.get("Decimate"):
|
||||||
|
#if obj.name not in exclusion_list and "Decimate" not in obj.modifiers:
|
||||||
|
print("adding decimate-modifier to:"+obj.name)
|
||||||
|
bpy.context.view_layer.objects.active = obj
|
||||||
|
bpy.data.objects[obj.name].select_set(True)
|
||||||
|
|
||||||
|
# Add Decimate Modifier with ratio 0.5
|
||||||
|
bpy.ops.object.modifier_add(type='DECIMATE')
|
||||||
|
bpy.context.object.modifiers["Decimate"].ratio = 0.5
|
||||||
|
|
||||||
|
# Function to be called on file save
|
||||||
|
def on_save_handler(blenderdoc):
|
||||||
|
if 'gltf_file' not in data:
|
||||||
|
gltf_file = bpy.data.filepath.replace('.blend','.glb')
|
||||||
|
else:
|
||||||
|
gltf_file = data['gltf_file']
|
||||||
|
|
||||||
|
add_decimate_modifier_to_objects()
|
||||||
|
|
||||||
|
# Export to glTF with specified settings and apply modifiers
|
||||||
|
bpy.ops.export_scene.gltf(
|
||||||
|
filepath=gltf_file,
|
||||||
|
export_format='GLB',
|
||||||
|
export_extras=True,
|
||||||
|
export_lights=True,
|
||||||
|
export_apply=True,
|
||||||
|
export_force_sampling=False,
|
||||||
|
)
|
||||||
|
notify(os.path.basename(gltf_file),"OK export")
|
||||||
|
|
||||||
|
# Register the handler
|
||||||
|
bpy.app.handlers.save_post.clear()
|
||||||
|
bpy.app.handlers.save_post.append(on_save_handler)
|
||||||
|
print("sourced gltf_export_on_save")
|
||||||
Loading…
Add table
Reference in a new issue