Showing posts with label 3D engine. Show all posts
Showing posts with label 3D engine. Show all posts

Wednesday, January 5, 2011

More 3D android stuff - animated models

Ok I have barely been home in the past couple of weeks so couldn't work on this little android 3D engine side project much, but here's an example of my animation class so far:

http://www.youtube.com/watch?v=MTh6nbvCcZg

Uses Hierarchy type animation, as opposed to the skeletal animation in the PC 3D stuff I've been doing. Imagine each section of the model being devoted to one and only one bone instead of 4 bone weights per vertex, I figure this is the lowest cost on the hardware since I'm not sure how much I can push the android. The next step I guess would be to either use softskinning via direct vertex pos interpolation between keyframes, or bones with 1 or 2 weights per vertex.

This is all done with OpenGL in Java.

Each little section of the model can also have a unique material property which I guess I'll have to showcase next, but I need to get my hands on a real android so I can take video that isn't so choppy. Emulation sucks.

Friday, December 17, 2010

Here I come, Android - Trying out 3D on the android

Remember my "Foof Engine" for the PC? My ongoing 3D engine project which was seemingly surrounded in ridiculous characters? :) It was truly a prototype for bigger and better things, and I'm still not ready to showcase what's been going on with that.

BUT! Today I figured I should try my hand on 3D on the Android! I've been working on some Android apps lately (again, will showcase those when I'm ready) and figured it's time to tackle 3D. First vid here:

http://www.youtube.com/watch?v=LuMMCLcDVIA

 Not bad for a day's work I'd say. This was all from scratch and most of the work was spent on writing the mesh class and the math. I got a little spoiled by the D3DX and XNA math libraries. It's been a while since I touched OpenGL but it hasn't changed a bit, anyone familiar with it at all should feel at home with the implementation on the Android.

I rolled a custom model format based on the one I use in the Foof Engine tech demos, but watered down tremendously - no bone weights, no support for normal maps, etc. I think I'll use a simple hierarchy based animation system in favor of more processor intense ones like vertex tweening or bones.

I put all my models and textures into the /res/assets/ folder, this is where you should put all your raw data that you don't want the IDE to give built in ID codes to, so you can access them by name. 

Textures in the sample were borrowed from CGTextures.com, and the unicorns are actually a snapshot of ones I made in LittleBigPlanet 2. The mushrooms I drew, aren't they pretty?

Mushroom Mushroom

 But all that aside, the render function right now just consists of clearing the screen and then going through a list of meshes and rendering them. I'm going to create a system of hashes to catalog the textures and meshes like I do in Foof Engine. 

I think I can make something cool out of this, so stay tuned. I have some ideas and this, as usual, is just a prototype for bigger and better things.

Friday, January 22, 2010

Foof Engine - Cheese Kung Fu, Grapes of Wrath, and cel shading!


All sorts of things going on in this update... first of all, I decide to try to give the cheese some melee moves. Yup.. MELEE MOVES! He can punch and kick and smack up a few 'nanners and... newcomers! A grape enemy that if in pursuit of Mr. Cheese will throw a grape grenade every few seconds. He also emits some grapes that go squishy when you kill him.

Also put in a rudimentary cel shading technique. Very rudimentary, first of all it clamps all lighting in bands and sort of checks for contrast in depth or normals to decide what an edge is. I sort of hacked it together independently, I'm sure there are better filters out there to find edges, but whatever! For now it works!

Also very interesting is my improved animation system... support for multiple tracks in my foof 3D format! Smooth blending between animations! Having separate bones play separate animations! Hoorah! Still needs LOADS of work.

Saturday, January 16, 2010

By the Broccoli in my hand...


Yes you see right. That is a flying saucer fighting a giant broccoli.

Video here : http://www.youtube.com/watch?v=FsAVcQAfC3s

What's new? Well I finally figured out what was wrong with my directional shadowmapping... embarrassing, really. I didn't realize that in orthogonal projection the z is already clamped between 0 and 1, I kept trying to divide it further by Z far... oops!

The decals are painted using a way I kind of theorized on my own, still needs work. Basically, a billboard quad is rendered and then we figure out the distance to the pixel behind it to figure out the tex coords and all that jazz. I will explain it more coherently when I have it perfected.

The bonus of this is no monkeying around with copying geometry, finding tex coords, etc. nonsense... this gives us seamless decals across all static geometry. FUN!

Saturday, January 9, 2010

Foof Engine: But what about bullet holes!?!?!?!?

Ok I know what you're thinking. Foofles, your game is awesome but the world is completely devoid of anything.

So I created a 3D map format and the export plugin for it for 3DS Max. And with my ultimate skill, I make a very basic map and show collision with the fireballs (and consequently anything else) with the map. It boils down to a sphere vs triangle check, but the faces and parts of the map are seperated into a tree (not really an octree... but something like it) to quickly discard things. It's not perfect yet but so far so good.

The bullet holes right now are a quad that gets placed where the collision took place, and sort of orients itself in the direction of the surface. Again, not perfect. Working on a better decal system.
VIDEO: http://www.youtube.com/watch?v=9y4038vAAs8

Foof Engine: EXPLOSION! FIREBALLS! Bananas Blowing up YEAH!!


Like I said, I promised AWESOMENESS and it shall be delivered. Here we have all sorts of things going on... animated "fireball" ish thing projectiles being shot out of the camera. Cool! They hit things and it blows up! COOLER! GIBS?!?! AWESOME!.. Yes gaze in AWE as each animated character explodes in a brilliant display of BOLOGNA CHUNKS.

Video here: http://www.youtube.com/watch?v=cWCvGxz1GaU

I know, this is the dumbest gib implementation ever. But whatever! IT works! Collision is really basic. We're talking sphere-sphere, sphere-cylinder.

Foof Engine: Mounting / Child objects

In Foof Engine, every physical object in the scene can have children. These children can be bound to specific bones in the parent, so this can enable things like mounting weapons to hands and what not. The bone-bound children get their positions updated when the parent is animated.

Physical objects include all meshes, billboards, lights, cameras, etc.

LInk to video here: http://www.youtube.com/watch?v=CplWtqgdig0

Spotlights and shadows in Foof Engine


I also have working spotlights and shadows, and alpha clipped objects cast shadows correctly! check it out! This is pretty basic stuff, video : http://www.youtube.com/watch?v=4tu2PL4u474

Codename Foof Engine - My 3D engine.

So, I figured I'd start work on my own little 3D game engine. I'll detail my progress and all the gritty little details so that you might implement it in your own projects.

Let me start with a simple gameplay video of a cheese character collecting coins in a forest. Naturally, I promised you awesomeness and awesomeness I devliver.

http://www.youtube.com/watch?v=5WZbveP7WeI

- WARNING - BORING GEEK STUFF AHEAD - WARNING -
My 3D engine is based on a deferred rendering architecture. That means that the lighting, fog, etc. is all computed post process. The rendering is split up into multiple parts. It takes up some more memory, but it makes it a lot more robust and open ended. My other videos will show more advantages of this.

I am using a model format that I created myself, it supports skeletal animation.