Saturday, December 8, 2012

The door to the Oval office - Update

So, after Ross's Nitpicking, I was able to get rid of a few more faces. I am down to 193 now. Let's see how it looks after texturing now.

Down to 193 faces
Ross you are such a stingy ass!

The door to the Oval office

Okay I realised that the last post was pretty useless for the purpose of getting critique, as I didn't really post any wire-frame. Also, after getting a couple of suggestions from the pros I worked a bit on it and was able to take the poly count to 206 (yeah, that's 200 polys less O_o). The visual result doesn't really look any different. I do have some doubts still though. I am not really sure about a couple of decisions I have made. I will need to consult with my resident modelling teacher Ross Hildick. You can check out his work here: Ross's Blog

So here are the wireframe images of the door.

This is the overall structure. This has 3 main parts, the outer frame, the inner frame and the door. This component has a total of 206 faces.

The doorway: 206 faces

This is how it looks from the back. I have deleted all the back-faces to keep the poly count down.

The back-side of the doorway

This is the outer frame, isolated. This piece has a total of 28 faces.

Outer frame, 28 faces

This is how it looks from the back.

Outer frame, back view

The inner door frame. I don't know if it can be further optimised as it has only 6 faces.

The inner frame

The door. This piece has a total of 112 faces. As you can see, it doesn't really have any depth to it. I am not sure if that is a good idea. I know that it exactly fits into the inner-frame and the player won't be opening it, but will it catch lighting properly, if it doesn't have any depth on the edges.

The door, 112 faces

The door-knob is another poly heavy piece. It has 60 polygons, but I can't really think of any way to make it lower than this and still retaining the shape.

Door-knob: Front view

Door-knob: Back view
That was a long post :p
Thanks in advance for any critique. Cheers!

Friday, December 7, 2012

Sony games Low-poly Modelling Testing

I have started with modelling for the Sony games project. I am just testing out a couple of things right now. Tonight I modelled a door to the room. This will, definitely, not be a part of my final submission, but I am just testing out low poly modelling. This door here has a total of 393 faces, including the knob, which I feel is a pretty decent number. Any more details on it will need to be put into the texturing stage. This was rendered using a quick renderMan setup. This is an 11 second render.

Low-poly door: model 393 faces, rendered with renderMan (11seconds)

Tuesday, December 4, 2012

Suddenly Debris!

To bring this night to an end I just created a little debris system in Houdini. this is for my project with Sony Games. This is a test debris system which I then imported into Maya as .fbx. Then I adjusted the geometry a bit, but as you can tell, I didn't spend much time on it (floaty pieces).

This was rendered using renderMan with the IBL. This is a 3 minute render with shading rate and pixel sample turned up way high.

Rendered using renderMan IBL
Next step would be to add more size variation to this and add other elements such as wood and metal pieces.

Off to bed now!


For Ego, I have to do some effects which involve smoke simulation, so I started to play around with the pyroFX system in Houdini. Here is the result of that. This is the very basic smoke cloud that I created using the system. I have rendered it using the Mantra PBR renderer and the micro-polygon renderer. The result is more or less similar, but PBR took ~3 minutes and and the micropoly took roughly 20 minutes.

Smoke cloud rendered using PBR renderer

Smoke cloud rendered using the micro-polygon renderer
The smoke here is just using basic default values. I would be revisiting it in a couple of days where I will start tweaking it to control it's temperature, fuel, wind etc. Also, I will be attaching it to direct-able particles at some point to simulate debris system.

Basic render tests with renderMan

Tonight I am doing some render tests with renderMan for Ego. I started out with working on a cartoony character to test out the GI options in renderMan.

This little guy is called 'Dino' and is modelled by Ross Hildick. The model is not finished yet, but I annoyed him to give it to me for the tests. As you can see there are a couple of problems with it, but overall the result is pretty decent. This render took 18 seconds.

Dino rendered with rederMan

After this I moved on to this other scene, again modelled by Ross Hildick.

Break-in AO pass
I did a rough lighting pass of the scene that Ross lent me and came up with this final result:

Break-in beauty pass. render time: 1 minute 23 seconds

It is probably too dark and is definitley very patch lighting work, but I did this in a couple of hours as this was just a rough test. The render time for this is around 1 minute 23 seconds.

Will be working on a few more scenes in the coming days, so watch out :)

AND visit Ross's blog here.
He is an amazing modeller! We call him Ross 'Lightning-hands' Hildick as he models incredibly fast :p

Tuesday, November 27, 2012

Games Style Modelling - 2

So, moving on from yesterday, I came in tonight and modelled a game level. I mainly concentrated on keeping the model low-poly while still adding some interesting detail into the level. I did a rough render of the level adding some basic moody lighting. This is the result:

Game level with a rough lighting pass

Of course I haven't added any textures to it, so it doesn't look like much at the moment.

The layout of the level is shown here. It has around 69000 polys. which, I think, can be handled by a game engine reasonably well.

The level - bird's eye view

The majority of the level was built by reusing a section. However, the crossing gave me a good chance to break the symmetry and push the design.

Some unique detail added to the crossing

The level is based on a lot of tiling. This is the basic geometry I built for the system and then just adjusted it to various situations.

The basic section

This shows how the basic section was used repeatedly to create the whole level.

The straight sections

The curved sections at the extremes also helped at some interest to the level. More variation can be added by using textures and various other maps.

The curved section

Pipes passing over the crossing gave me some opportunities to add interest.

Some detail on the roof
So that was about it. I might take this on and texture it, but honestly I don't see myself making that effort, especially because this is done using a tutorial and is not my design. I guess I learned as much  wanted form it and I would leave it here now. Tomorrow I go on to model some destruction.

Monday, November 26, 2012

Games Style Modelling - 1

So, I am now researching for this Sony Games project that I have. I started off my going through a few forums and a few tutorials to get a basic understanding of the general conventions of modelling for the games industry. I would also be looking into environment design literature. However, there is not much available directly for games, but I guess stuff from film is equally relevant.

I have started doing a basic tutorial from Digital Tutors where they are talking about games modelling and texturing. This is work from the first day on it. The model here is around 20000 polygons and I still need to add a few things like props, wires, bevels and some other bits and bobs.

Here are some snapshots:

The Cryo-chambers

Detail on the lab-door and the recovery room in the background

The intake wires and the ceiling

Interior of the capsule

Friday, November 23, 2012

Crowd Simulation - Getting Started

Well I am not an expert on crowd simulation, but I have been reading up a lot over the past few weeks. Here I am presenting a list of key readings for someone who wants to get started with it. My main area of interest is behavioral animation so this reading list is geared more towards that.

1. Crowd Simulation by Daniel Thalmann and Soraia Raupp Musse.
I think this is the key text if you wanted to get started with crowd sims. It is like a huge survey paper of what is going on in the field. It is a bit dated now and doesn't include the research from the last 4-5 years, but still is a great starting point.

2. Flocks, Herd and Schools: A Distributed Behavioral Model by Criag Reynolds.
This is where it all started for behavioral animation. The model presented here, however simple, is still very relevant and effective. This is a must read for someone looking to get down and dirty with crowd-sims. Reynold's model works on a premise that if we simulate relatively simple individuals effectively, group behavior will automatically surface. He was able to demonstrate his theory very effectively in the artifact he created.

3. Artiļ¬cial Fishes: Physics, Locomotion, Perception, Behavior by Tu and Terzopoulos 
The model presented by these researchers is based on the same basic premise as Reynolds. However, this is a much more complex and evolved model. The fish in their model have internal states like hunger, libido etc and also some 'habit parameters'. On a second level they have evolved behavior like hunting, mating and schooling. On another level the fish have sensing capabilities and could sense things like temperature for example.

To make this model work there is an algorithm that generates intentions based on internal states and environment variables and produces an output. This output is then passed down to the behavior routines engine and this specify what lower level actions to perform to fulfill the intentions.

This reading is a bit dated but is still relevant as a lot of research in the field has branched out of here. It still remains a key reading for a beginner.

4. Hierarchical Model for Real Time Simulation of Virtual Human Crowds: 
Soraia Raupp Musse and Daniel Thalmann
This paper is a bit advanced and discusses a few more higher level concepts. The main aim of this paper is to come up with a real-time model of crowd simulation. The paper discusses two major points, Crowd Structures and Crowd Behaviours.

Crowds are structured in a hierarchical manner and has 3 levels: Crowd, Group and Individual. The parameters set at a higher level are inherited at the lower level. At the lower level, these parameters can be over-riden. So for example, if we make a crowd 'happy', we can have a group or an individual who is 'sad' and then this entity will behave in a different manner.

In this model, groups are the most complex entity. The individual agents share a decision process and all the information required for this process. The model allows for complex group behaviour like splitting or mutiny.

5. Group Behaviours for Systems with Significant Dynamics by Brogan and Hodgins
This paper mainly talks about something they call 'significant dynamics', i.e., the simulation of crowds where the dynamics of locomotion of the agents is complex enough to impact the behaviour.

The more relevant part of the paper is where they present the algorithm for group behaviour. They divide it into two parts: Perception and Placement. Perception allows the agent to sense the relative position and velocities of other agents and static objects. Placement works by computing a desired position of an entity. All the approaches actually use this higher level algorithm, however, the lower level implementation detail differs.

6. Crowd Simulation for Virtual Heritage: Branislav Ulicny and Daniel Thalmann
The concept presented in this very brief paper is very elegant, although a bit advanced for the beginner. This is a three level system.

On the topmost level there are rules which have two parts. The antecedent part defines which agents are allowed to use which rules and under what circumstances. The consequent part defines the effects of firing the rule which can be change in current agent behaviour, attributes or event triggering.

The current behaviour is performed at the intermediate level. Here every possible behaviour is implemented as a Finite State Machine(FSM)

On the bottom-most level we have algorithms for path planning and collision avoidance etc.

The reading list given above is in now way exhaustive, but will help someone new to crowd simulations to get a hang of what are the major issues and how are they generally handled. It would also help the reader get comfortable with the jargon. From here you can graduate on to newer ideas and more current research.


Wednesday, November 21, 2012

Building upon the Car agent

In the past few days I have taken the car agent and extended it's functionality a bit more now.

The extended functionality includes:

1. It has headlights and looks cool :p

2. The front and the back wheels turn according to the speed of the car. This is achieved by dividing the speed of the car by the circumference of the wheel given by the expression: 
(tz / (3.1415927 * wheel_radius)) * 360

3. The front wheels can now be steered.

4. The motion of the car is driven by the steering of the front wheel. This then decides how much is the car turning based on the steering. In theory now, the whole decision system needs to just interface with this steering module and it can decide where the car is going based on the environment.

Getting till here has been such a great struggle as Massive still keeps crashing. Also, none of the short-cut keys work. So, if I want to alt-connect something to drive the rate for example, I am not able to do that.

Will try to put up the videos of the system that I have created. I managed to do a capture, but it just doesn't work nicely. So still trying to figure that bit out. Here are some samples from what I did till now.

The brain of the Car agent at the current state of development
The wheel spin module
The steering module

The steering-turning module
Will try to get up a video ASAP.
If you are interested in discussing about Crowd Simulation, or Massive, just drop me a line :)

Sunday, November 18, 2012

Another day with Massive

Well.. It's getting better. It's not that Massive is behaving better now, it's just that I am getting used to it misbehaving.

It just has a very peculiar way of working, and has unintuitive work-flow. For example, if a node in your scene is not connected to anything and you delete it, you lose the whole network. So, if you want to delete a node, the way I figured out to delete it is that you first connect it to something and then delete it. It's still early days and I might be doing something completely foolish, but the software is just not natural to work with.

I would say it is a beautiful and elegant software design but it's poorly implemented.

OKAY. So with my rant out of the way. I got on with some tutorials and started making this car agent. At the moment, it can just drive around and you have to steer it manually and it can knock over traffic cones.

Here is the basic skeleton of the car agent. Once ready, this agent will be able to move and steer. There are also hubcaps on the wheels so the rotation of the wheels is visible.

Skeleton of the Car Agent to drive its behaviours
 I then went on and put up some blocks to define the car of the agent. In the end I think I will attach some better render geometry to it. These blocks are just for collision shapes for ODE-RBD.

Collision shapes attached to the skeleton for ODE-RBD
(Open Dynamics Engine Rigid Body Dynamics)
This is not really relevant to this post, but just found this screenshot on my machine. This is the Motion Tree of a human agent I am building at the moment. Will talk about in detail later.

Motion tree for an upcoming human agent
Keep watching this space as I would be updating my work on crowd simulation regularly(-ish). 

Massive - Meh

I decided that I am going to do some crowd simulation this year for various projects that I am involved in. The obvious first choice to look at was Massive, as it is talked about a lot and supposed to be good. I have had a few interactions with it, and I would have to say I am NOT very pleased. It crashes at every opportunity and is generally unstable. The UI is not at all intuitive and the 'undo' generally doesn't work. Also, the company is VERY uptight about academic licences.

I think it is a very elegant software design, but very sloppy implementation. Maybe the newer versions are better, but it's just impossible to get hold of them, so I don't really know. Did place a request for a PLE but they flatly refused.

Might be shifting to something like Golaem now or might try to build a AI network in Houdini.

Let's see how it goes.