Skip to content

Instantly share code, notes, and snippets.

Avatar

Elie Michel eliemichel

View GitHub Profile
@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
View BlenderSurfRigMerge.py
"""
Usage: blender.exe -b -P BlenderSurfRigMerge.py
Requires TransferMaterialsOperator.py in the same directory
Copyright (c) 2018 -- Elie Michel
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (theSoftware”), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
View TransferMaterialsOperator.py
"""
Transfer material data from active to selected objects.
If the active object is a group instance, recurse over its elements and match
destination by name (object selection is then ignored).
Copyright (c) 2018 -- Elie Michel
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (theSoftware”), to deal in
the Software without restriction, including without limitation the rights to
@eliemichel
eliemichel / hscript
Last active Jul 16, 2018
Fade out offset
View hscript
// Fade in
{
float x0 = ch("../PARAM/start_crossfade_frame");
float x1 = ch("../PARAM/end_crossfade_frame");
float a1 = 0.01;
float a0 = a1 / (2 * (x1 - x0));
float b1 = a0 * (x1 - x0) * (x1 - x0) - a1 * x1;
return if($FF < x0, 0, if($FF < x1, a0 * ($FF - x0) * ($FF - x0), a1 * $FF + b1));
}
// Fade out
View autoRotateMaya.py
"""
autoRotate
==========
Align the selected edge to the world X axis of the scene by rotating the whole mesh.
Usage
-----
Select exactly one edge, then run the script.
View autoTransformBlender.py
"""
autoRotate
==========
(Blender edition -- also available for Maya)
Align the selected edge to the world X axis of the scene by rotating the whole mesh.
Usage
-----
View bufA.glsl
// Copyright (c) 2017 - Élie Michel
// License: CC BY 3.0
// Please credit even if you are just re-using the particle system.
// Sync with 'Image' buffer
const float dt = 0.001;
mat3 particleSpaceMatrix(vec2 origin, vec2 velocity) {
vec3 O = vec3(origin, 1.);
vec3 X = normalize(vec3(velocity, 0.));
View sphere.glsl
struct Ray {
vec3 origin;
vec3 direction;
};
bool intersectRaySphere(out vec3 intersection, in Ray ray, in vec3 center, in float radius) {
vec3 o = center - ray.origin;
float d2 = dot(ray.direction, ray.direction);
float r2 = radius * radius;
View rain-drops-280.glsl
#define a(p) textureLod(iChannel0, p, 2.5)
#define t texture(iChannel1,
void mainImage( out vec4 c, vec2 g )
{
c = a(g /= iResolution.xy);
vec2 x = vec2(20);
vec4 n = t round(g*x - .3) / x);
vec2 z = g*x * 6.3 + (t g * .1).rg - .5) * 2.;
x = sin(z) - fract(iTime * (n.b + .1) + n.g) * .5;
View shadertoy-ldSBWW.glsl
// Author: Élie Michel
// License: CC BY 3.0
// July 2017
void mainImage( out vec4 f, in vec2 c )
{
vec2 u = c / iResolution.xy,
n = texture(iChannel1, u * .1).rg; // Displacement
f = textureLod(iChannel0, u, 2.5);