A while back I heard about a competition happening in Vancouver where people design park installations with a focus on both a rainy climate and those with social anxiety.
I thought this would be really fun as I'm originall from Vancouver and very much enjoy the rain. I love being able to go to a secluded area outdoors when it's raining and reading while listening to the rain on various surfaces. During the times I've lived outside of Canada I have memories of homesickness being cured by a rainstorm.
The project tooling consisted of :
SideFX Houdini (modeling)
Krita (texturing and graphic design)
Unreal engine (rendering, lighting, camera rig etc)
Here is ortho shot
Here is one of the perspective shots
To create this project I decided to take this opportunity to learn SideFX Houdini. I bought a 1 year license and started to get to work learning. The main DCC programs I've used in the past 15 years have mainly been Maya, 3dsmax and a little bit of XSI. The autodesk DCC products are servicable but I'm by no means loyal to them and was interested in going a non-autodesk route for my return to 3d modeling.
It just so happens at the time I entered this contest I worked at a company where I had a co-worker from the VFX field who absolutely loves Houdini. After a few months of hearing about its features I was finally convinced to take a dive and give it a try. I'm glad I did, not only is Houdini a fraction of the price of a Autodesk product, it's so much nicer to use once you get used to it. Especially if you have a programming and procedural generation background.
Finally here is the piece I wrote for the contest entry :
Sound Shelter is a modular mobile shelter with 3 key design goals
Maximize the sound of falling water
Some have can be soothed by the sound of falling water. This project explores a design built to exploit the sound of falling water.
The roof, central water collector and the 4 water collectors are intended to maximize the sound of falling water.
The roof in particular is intended to collect water and evenly distribute it around the center to create a rain wall waterfall. The water lands in the center of the structure and falls evenly into the center left and right planters.
Collect rain to be used for potted plants
The water collectors are intended to have slow release water spouts so that they can provide water to potted plants over time when there is no rainfall. The center two water collectors dispense water to the outer water collectors when the start to get full.
Modular and easy to assemble
The strucuture has been designed to break down into a series of flat panels which lock into each other.
The roof is intended to separate into 7 triangular parts. The floor is broken into 6 separate panels which also lock into each other. There are 12 identical support columns. The planters consist of 2 legs and a single planter section. Unfortunately due to time constraints I haven't been able to provide illustrations of the modular nature intended for this piece.
After almost 3 years the blog is back and I've ditched wordpress for a static site generation library which I authored. There are many reasons I chose to write my own generator rather than use an existing solution. Not good reasons but reasons! Here they are :
Solves my exact use case
Since the target user for this is me I get software that solves my exact use case. It's a rare case to be able to get software so custom tailored to your use case.
Fun
Managing a static website package doesn't sound nearly as fun as writing my own static site generator! I got a change to play with a lot of different .NET libraries.
I really had a great time using the Managed Extensibility Framework (MEF) for reasons I'll explain in the next section. I enjoyed using the Razor templating engine in ASP/MVC so I pulled it out rather than write my own. I used System.Reactive very lightly and for the problems it solved it was really interesting to play with.
Learning and practice
Besides being able to get better aqquainted with a lot of prominent .NET libraries I was able to learn a lot.
At work you usually have to take a fairly conservative approach to designing software but at home I'm free to try all sorts of crazy program designs and since I have no deadline I'm free to heavily refactor and restructure my code repeatedly.
MEF was really useful here. I basically used it as a way to reduce friction when heavily restructuring my program. When my dependencies change I just need to edit a classes importing constructor. I don't need to deal with all the tedium of fixing up constructor calls everywhere.
After working and creating a program I can also now see how I would pull out components of my program into a plugin system if I wanted to make this generator applicable to other websites I would like to make such as a level design blog or a recipe database. The way to design the plugin API is a lot more clear after writing the program. I imagine if I do take the time to write a plugin api it will be a lot stronger compared to if I had designed it before writing a static site generator.
I’ve been taking some time off work and every now and then I’ve been working on a small arcade flight shooter game I currently call Lune.
I don’t have any harsh timelines or anything so I’ve been able to do things like completely scrap and re-implement the input and play control systems 3 times. It’s been interesting seeing how good the controls feel when I try different things like having the analog sticks control the players ship directly or having the analog sticks control the players reticle in screen space and have the ship try to “catch up” to the reticle.
There is no clear superior method from my tests so far. Each method has both positive and negative qualities. Right now what I’m doing is directly controlling the ship and then emitting 2 points along a ray originating from the player ship’s transform. I then convert the 2 points coordinates from world space to screen space and use those coordinates to determine where I should draw the aiming reticles on the screen.