@opherv / May 2016
Graduate of Bezalel Academy of Arts &
HUJI Computer Science
I'm a creative developer at Interlude
Creating the Environment
The process:
Hacking a shader to create wavy water
...
float waterDisplace;
waterDisplace =
1.0 * (-2.0 * sin((timestamp + (position.x * 100.0 ))))
* 6.0 + (1.0 * cos((timestamp + (position.y )))) * 17.0;
gl_Position = projectionMatrix * modelViewMatrix
* (vec4(position, 1.0) + vec4(0.0, 0.0, waterDisplace, 0.0));
...
Creating the creatures
Early prototype
My work process:
This is a "tree"
This is a pointy "tree"
This is a pointy, poisonous "tree"
Spike algorithm
For every bone
For every face on the bone mesh
create a triangle polygon
align it to the face normal
scale it in relation to the mesh area
Merge the polygons in to a single geometry
Profit $$$
This is a pointy, poisonous hexapod
Special FX
Opening portals
Opening portals
var video = document.createElement( 'video' );
video.src = "portal.webm";
video.loop=true;
video.load();
video.play();
var videoImage = document.createElement( 'canvas' );
videoImage.width = 800; videoImage.height = 450;
var videoImageContext = videoImage.getContext( '2d' );
var videoTexture = new THREE.Texture(videoImage );
videoTexture.minFilter = THREE.LinearFilter;
videoTexture.magFilter = THREE.LinearFilter;
var movieMaterial = new THREE.MeshBasicMaterial(
{ map: videoTexture, overdraw: true, side:THREE.DoubleSide, transparent: true } );
var movieGeometry = new THREE.PlaneGeometry( 800, 450, 1, 1 );
var obj = new THREE.Mesh(movieGeometry, movieMaterial );
function updateAnim(){
if ( video.readyState === video.HAVE_ENOUGH_DATA )
{
videoImageContext.clearRect(0,0, videoImage.width, videoImage.height);
videoImageContext.drawImage( video, 0, 0 );
videoTexture.needsUpdate = true;
}
}
...
level.addEventListener("render",updateAnim) // hook into the threejs render loop
Vignette shader
Vertical blur Shader
Film grain shader
Final Notes
Telluric was built with Three.JS R69-R71
Every new release of Three.JS set me days back -
factor this into your dev time
@OpherV
opherv.com
opherv@gmail.com
github.com/opherv