Skip to content

Instantly share code, notes, and snippets.

Avatar

Elie Michel eliemichel

View GitHub Profile
View blender-icon-list.py
import bpy
class IconPanel(bpy.types.Panel):
"""Creates a Panel width all possible icons"""
bl_label = "Icons"
bl_idname = "icons_panel"
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
bl_context = "object"
@eliemichel
eliemichel / CMakeLists.txt
Last active Jul 13, 2021
Linking issue with OpenVDB - Windows 10, Visual Studio 16 2019, static linking
View CMakeLists.txt
cmake_minimum_required(VERSION 3.7..3.20)
project(MyTest LANGUAGES CXX)
set(OpenVDB_INSTALL_DIR "" CACHE STRING "Directory specified as CMAKE_INSTALL_PREFIX when building OpenVDB")
list(APPEND CMAKE_MODULE_PATH "${OpenVDB_INSTALL_DIR}/lib/cmake/OpenVDB")
set(OPENVDB_USE_STATIC_LIBS ON)
find_package(OpenVDB COMPONENTS openvdb REQUIRED)
@eliemichel
eliemichel / TinyTimer.h
Created Jun 7, 2021
A simple C++ timer library
View TinyTimer.h
/**
* A simple timer library.
*
* Basic usage:
* using TinyTimer::Timer;
* Timer timer;
* // .. do something
* cout << "Something took " << timer.ellapsed() << " seconds" << endl;
*
* One can also consolidate several timings to measure standard deviation:
@eliemichel
eliemichel / marmoset.js
Created Mar 1, 2019
Marmoset viewer embedded code, as is
View marmoset.js
/*
(Built: Mon, Sep 24, 2018 4:38:25 PM)
Marmoset Viewer Code and Tools
Copyright (c) 2018 Marmoset LLC.
All rights reserved.
Redistribution and use of this software are permitted provided
that the software remains whole and unmodified and this copyright
notice remains attached. Use or inclusion of any portion of this
@eliemichel
eliemichel / apply_temporal_mapping.jsx
Created Aug 8, 2020
Temporal Stabilization for AfterEffects
View apply_temporal_mapping.jsx
// Select the layer to apply remapping to
// (the rush or any edited version of the rush as long as
// the in/out timings match the original)
var layer = app.project.activeItem.selectedLayers[0];
var timeRemapping = layer.property("ADBE Time Remapping");
// Remove previous keys
while (timeRemapping.numKeys > 0) {
timeRemapping.removeKey(1);
@eliemichel
eliemichel / list_marmoset_archive.py
Last active Sep 19, 2019
List the items contained in a Marmoset Viewer's .mview archive file
View list_marmoset_archive.py
import struct
def readCString(f):
"""This is the most naive implementation possible, don't use in prod"""
str = ""
c = f.read(1)
while c != '\0':
str += c
c = f.read(1)
return str
@eliemichel
eliemichel / MOD_pizza.c
Created Sep 14, 2019
Dummy Blender modifier
View MOD_pizza.c
#include "BKE_modifier.h"
#include "DNA_mesh_types.h"
#include "DNA_modifier_types.h"
static Mesh *pizza_applyModifier(struct ModifierData *md,
const struct ModifierEvalContext *ctx,
struct Mesh *mesh)
{
printf("PIZZA is cooking on data @%p\n", md);
return mesh;
@eliemichel
eliemichel / eliemichel_bezierspline_PythonModule.py
Created Apr 24, 2019
Script of a BezierSpline Houdini Digital Asset
View eliemichel_bezierspline_PythonModule.py
# BezierSpline
# (Houdini Digital Asset Module)
# Shared under the terms of the MIT License
# Copyright (c) 2019 Elie Michel
# This is a wip, expect more docstring eventually
from __future__ import print_function
# Utils
View varint.py
# Varint decoding: https://developers.google.com/protocol-buffers/docs/encoding
import struct
def readVarint(f):
multiplier = 1
value = 0
b = 0xff
while b & 128:
b = struct.unpack('B', f.read(1))[0]
value += multiplier * (b & 127)
@eliemichel
eliemichel / output
Last active Mar 2, 2019
Output of list_marmoset_archive on vivfox
View output
$ python marmoset/marmoset_archive.py
Name MIME type Compressed Size Raw size
thumbnail.jpg image/jpeg False 0x1e5ca 0x1e5ca
sky.dat image/derp True 0x127a8e 0x200000
mesh0.dat model/mset False 0x43230 0x43230
mesh1.dat model/mset False 0xd86c 0xd86c
mat0_c.jpg image/jpeg False 0x2c055 0x2c055
mat0_r.jpg image/jpeg False 0xbc42 0xbc42
mat0_n.png image/png False 0x110666 0x110666
mat0_g.jpg image/jpeg False 0x415a8 0x415a8