Skip to content

Instantly share code, notes, and snippets.

@aobond2
aobond2 / AssetAuditorWindow.cs
Created February 13, 2026 16:10
Check all object in a scene, get info on triangle count, texture size, and memory size. Then enable sorting based on these.
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEngine;
namespace Editor
{
public class AssetAuditorWindow : EditorWindow
{
private Vector2 _scrollPos;
@aobond2
aobond2 / VFXSummarizer.py
Last active February 1, 2026 17:23
Script to summarize from csv data here into html report, attach utrace as well. More detail here https://www.bondhan.com/2026/02/01/automated-vfx-audit/
import csv
import os
import shutil
import webbrowser
from datetime import datetime
# USE RAW STRINGS (r"") TO AVOID BACKSLASH ERRORS
# TODO: Set this to not be local
csv_folder = r"C:\Users\aobon_ktnb1ku\Documents\Unreal Projects\AutoTest\Saved\Profiling\CSV"
profiling_root = r"C:\Users\aobon_ktnb1ku\Documents\Unreal Projects\AutoTest\Saved\Profiling"
@aobond2
aobond2 / SSIMExample.py
Last active January 28, 2026 15:58
Testing out ssim between 2 images, then visualise the difference. Using scikit-image
from skimage.metrics import structural_similarity as ssim
import cv2
import matplotlib.pyplot as plt
imgGold = cv2.imread("C:/Users/aobon_ktnb1ku/Documents/SSIM Test/Screenshot_1.png", 0)
imgTest = cv2.imread("C:/Users/aobon_ktnb1ku/Documents/SSIM Test/Screenshot_2.png", 0)
ssimScore, diff = ssim(imgGold, imgTest, full=True)
# diff here is image array
@aobond2
aobond2 / VertexColourByWorldHeight.py
Created January 28, 2026 15:52
Blender plugin to make vertex colour gradient on selected objects, from top to bottom. Work on multiple objects.
import bpy
import mathutils
class VCH_OT_VertexColourByHeight(bpy.types.Operator):
"""Vertex colour based on world space Z position"""
bl_idname = "paint.colour_by_height"
bl_label = "Vertex colour by world height"
bl_options = {'REGISTER', 'UNDO'}
@classmethod
@aobond2
aobond2 / RigExportPlus.py
Last active January 9, 2025 22:24
Initial functionality was to validate and export rig. Added Tagging system, various validation, naming, export automation, auto thumbnail and more
"""
Maya/QT UI template
Maya 2023
"""
import maya.cmds as cmds
import maya.mel as mel
from maya import OpenMayaUI as omui
from shiboken2 import wrapInstance
from PySide2 import QtUiTools, QtCore, QtGui, QtWidgets
import json
import os
import csv
bucketURL = "https://storage.googleapis.com/glb-content-bucket/GLB/"
thumbnailLocalPath =""
thumbnailLocalFolder = "C:/Users/BondhanKimbalazani/Documents/ModularCharacter/GLB_Test/Thumbnails"
GLBfolder = "C:/Users/BondhanKimbalazani/Documents/ModularCharacter/GLB_Test/"
csvData = []
csvPath = "C:/Users/BondhanKimbalazani/Documents/parts.csv"
@aobond2
aobond2 / BlenderThumbnail.py
Last active April 12, 2024 09:29
Iterate on objects, create camera+lights, then make nice thumbnail render
import bpy
from mathutils import Vector
import math
import os
folderPath = "C:/Users/BondhanKimbalazani/Documents/ModularCharacter/GLB_Test/BodyA"
#folderPath = 'C:/Users/BondhanKimbalazani/Documents/ModularCharacter/GLB_Test/BodyA/TorsoUpper'
thumbnailFolder = 'C:/Users/BondhanKimbalazani/Pictures/Thumbnails/'
def importGLBs():
import subprocess
import os
import sys
# TODO: Not sure if this is default folder for everyone
userFolder = os.path.expanduser('~')
avatarToolsFolder = userFolder + '\\avatar-tools'
recursiveArg = '--r'
def getArguments():
import unreal
# Change this with desired LOD level
targetLOD = 0
# Change this with target folder for GLB output
targetFolder = "C:\\GLBExportTest\\"
targetFileFormat = ".glb"
selectedAssets = unreal.EditorUtilityLibrary.get_selected_assets()
numAssets = len(selectedAssets)
@aobond2
aobond2 / MakeMMLFromCSV.py
Last active February 21, 2024 17:29
Read csv for all categories and available GLBs, then write out MML avatar based on some rule
import csv
import random
import os
# Source CSV
CSVfilepath = "C:/Users/BondhanKimbalazani/Documents/ModularCharacter/ClothingTest-Sheet3.csv"
TextOutputFolder = "C:/Users/BondhanKimbalazani/Documents/ModularCharacter/MMLOutput"
BodyArray = []
HairArray = []
LegBaseArray = []