Programming Adventures 2 - Unity3D Translation

Programming Adventures 2 - Unity3D Translate When moving objects using gameObject.transform.translate(x,y,z), its direction is based on the object's local transformation.

That means that a square object rotated 90 degrees right will translate +Y when translated by (10, 0, 0).

This bug happens when trying to translate objects using world space vectors.

Solution The solution is to use gameObject.transform.SetPositionAndRotation( gameObject's position + translation direction, __); this avoids the local transformation stack!

Programming Tricks 1 - PHP and JS/CSS

Programming Tricks 1 PHP When creating PHP scripts, there is a funny error that if there are spaces before the first <?php tag, the session information is sent before the php script is executed.

So if you get:
 [22-Sep-2019 12:09:17 America/New_York] PHP Warning:  session_start(): Cannot start session when headers already sent in /home/esceqrkk/groundstationdatabase/main.php on line 3  And there is no code before that main.php file, it's due to the spaces.

Javascript + CSS A super easy way to animate and control your CSS animations is to use css transitions, css variables and jquery all in one go for example:

JQuery side:
var currentXTranslation = 0; $(document).ready(function () { $("#NavigateLeftButton").hide(); $("#NavigateLeftButton").click(function(evt) { currentXTranslation += 100; $(':root').css('--current-x-translation', currentXTranslation + "vw"); CS…

Project 6: Marching cubes algorithm and metaballs.

The marching cubes algorithm is a way of creating polygons from volumes of data. The data it works on is varied such as 1 / R^2 (the one used to produce metaballs) and a noise function like perlin noise.

My implementation of marching cubes in a nutshell is initially the scene is split into a 3d grid of voxels, then at the corners and center of each voxel an isovalue is calculated (to form the isosurface).
Then using the comparison between the isovalue at each vertex with a threshold value, a table of indices which tell you which edges have been intersected and how each edge is connected to form the triangle facets is referenced.

To generate metaballs from this technique, i used the function 1 / distance^2 to calculate the isovalues at vertices.

Calculating the normal at each triangle facet was done through assuming that each point charge in the scene was a sphere, and the triangle was sitting on the surface of each sphere, individually taking the normals each time. I then took the ave…

University work: The Column.

This assignment for 3d graphics and simulation module involves rendering a scene from scratch using opengl and simulating physics with collisions between different shapes.

Here's what I have so far:

I still have a bunch of work to do with the portals (you can see that they disappear and reappear), the collision responses between the objects (it is kind of `glitchy` and I want to implement proper prediction and intersection calculations) and attenuation of the light sources.

I'm pretty happy with what I have so far, but with projects like these I feel like I could add a million things and never feel like it is fully completed!

Graphics Work

A quick update on what I've been working on recently.

For one of my modules Simulations and 3D Graphics, we were set a task to learn lighting and materials. So far I have implemented a single light, using ADS and blinn-phong (again).

The camera can rotate, move forward/backward. The armadillo can be rotated on it's pedestal and the whole scene can be rotated.

Project 5: Stanford dragon rendering

This dragon is one of the many models which the Stanford University Computer Graphics Laboratory scanned. More info I used this to practice for an upcoming module, it is made in OpenTK and uses OpenGL 4.5.

Work for this included:
Loading vertex and normal data from .OBJ.Parsing material file for Blinn-Phong attributes.Blinn-Phong glsl shaders.Setting model/view/projection matrices.Configuring camera and light positions.

Project 4: Ray casting with a 2d graphics library.

Implementing this using one of my favorite frameworks ( in Lua was a lot of fun!

This is heavily inspired by Wolfenstein 3D.

It involved simple trigonometry, calculating ray/shape intersections, figuring out how to map textures and lighting effects.

A problem I encountered was a fisheye lens effect, because for each ray projected into the world, I would map the intersection distance directly to the height a wall (which is a group of line slices). However what I needed to do was calculate the perpendicular distance of the intersection using the projection plane as a reference.

Here's a great image which helped me understand the problem a lot, originally my raycasting method resembled the one of the far right.

Here are the resources I used: - Help with the projection plane/intersection distance calculation. - How I map the texture coordinates onto…