Saturday, 7 March 2015

Website Update!!!

I finally got round to updating my website. Lots of new work on there and still lots more to come. Check it out.

Collage of some of the work I have done.

Monday, 16 February 2015

Houdini Space Colonisation Python SOP & VEX Infection Growth

First post of the year and I though I would start with something technical. I have been looking a lot into procedural modelling, growth and aggregation methods in Houdini lately and have implemented some using VEX and Python.

The first method I implemented was space colonisation using a Python SOP in Houdini. This takes a set of input points, which will be referred to as leafs, then starting from a root point we add new branch points which grow towards the leafs. Once a branch point gets close enough to a leaf point then the leaf point is removed. Finally we loop over all the branch points and attach them together.

How I implemented this with a Python SOP:
  • Loop over all the input points and using there position create an array of leafs.
  • Create a root branch and begin the growth process.
  • Start by comparing every leaf to every branch and check the distances. If the distance is to close then remove the leaf. If the distance is too far then do nothing.
  • If the distance is with in the range then check to see if this branch is the closest branch to the leaf and get the direction. Each leaf can only attract one branch at a time.
  • Now for every branch that was in range we need to get its average growth direction as branches can be attracted to multiple leafs. To do this we add the direction we got earlier to the growth direction of each branch. We also increment the branch growth count variable.
  • Now we loop over the branches and find any branch with a growth count more than 0.
  • Then we divide the growth direction by the growth count to get the average direction.
  • We create a new branch using the average direction and set its parent to the previous branch.
  • We also need to reset the parent branch growth count and direction. 
  • Repeat the the growth process until all leafs are removed.
  • Loop over all the created branches and create points as well as lines to link them all together.  
Here is a video of the final result.

For my next method I used VEX and a SOP solver to create infection like growth. Basically I started with a set of points. Then I created an integer attribute which stated wether that point was infected or not. Finally using point clouds I found the closest point the was not infected and moved the infected point towards it which then infected that point. This process is then repeated.

Here is how I implemented this:
  • Create a set of points with an infected integer attribute.
  • Set some of the points infected attribute to 1.
  • Now inside a SOP solver find the closest point using a point cloud. However if the point is infected ignore it when doing the point cloud look up.
  • Move the infected point towards the closest point found in point cloud by updating its velocity attribute.
  • Finally integrate to update the position and when the point is close enough set the infected attribute to 1. 
SOP Solver Network. Done with wrangle nodes.
Here is a video of the final result.

Thursday, 6 November 2014

Interior Design And Visualization

Iv been working on a couple of visualization project over the last few weeks and the move to VRay has really improved my visuals. The improvement has mainly come from learning not only about VRay but also about light, rendering and shading in general. However I still want to try doing some interior renders with Mantra and maybe comparing the result from each.

Babylon Restaurant Visualization

Friday, 17 October 2014

Moving To VRay!!!

I seem to be doing lots of visualization work these days so decided to move to VRay. I think its much easier than Mental Ray to get the final result you want. But this in my opinion is because of how easy to use the VRay materials and lights are. I personally think Mental Ray is still a good renderer but I now prefer VRay mainly because of its materials.

I may also start using Houdini with Mantra for visualization work as I haven't tried any interior lighting and rendering with Mantra before. Also Mantra is one of my favourite renders.

Test scene I made as a way to learn and understand VRay.

Sunday, 5 October 2014

Unity Bezier Curve Script

Following from my previous post I have been working on this bezier curve script in my spare time. The script was done with C# in Unity and takes an array of objects as the input. The script then creates a curve by using these objects as control points.

The script works in the viewport by utilising the gizmo object and at render time I used the Line Renderer. I found this website which goes really in depth with creating bezier curves in unity.

Unity Bezier Curve Viewport Update

Below is the entire script which I have kept in one file just for simplicity.

Sunday, 28 September 2014

Unity Bezier Curve WIP

Recently I have been learning Unity and playing around with scripting with C#. For my first project I needed to utilize bezier curves but they are not available by default in Unity. So I decided to create my own small bezier curve script.

To start I did some R&D in Houdini with a wrangle sop to figure out how to create a simple bezier curve. I then ported this into C# for Unity. I'v still got to create the rest of the script but here is the Houdini R&D along with the VEX code.

On the left is the Houdini Bezier curve and on the right is the Unity one.

Thursday, 25 September 2014

OpenGL ES Rendering Engine IOS

This is an old IOS app development project I worked on last year but because of copyright I have only recently been allowed to show the app. The app was developed for a company which specialised in creating bespoke solutions for elderly and disabled people. For this app I created my own OpenGL ES rendering engine.

The app and artwork was done by me and was fully functional on a first generation IPad. Everything ran smoothly at around 30fps. More about it on my website.