any nature library must have, besides a vegetation system, a decent sky/clouds part.
also, check out http://www.inframez.com/events_volclouds_slide01.htm for more information on volumetric clouds.
any nature library must have, besides a vegetation system, a decent sky/clouds part.
also, check out http://www.inframez.com/events_volclouds_slide01.htm for more information on volumetric clouds.
Posted in Game programming | Tags: graphics simulation, nature scene, bloom, game, game engine, programming competition, 3D, game creation, microsoft, c#, xna
Posted in Game programming | Tags: graphics simulation, nature scene, bloom, game, game engine, programming competition, 3D, game creation, microsoft, texture, parallax, bump mapping, procedural, terrain, xna
update: i finally implemented water in the library – reflections, refractions, waves and specularity:
i’ve worked at this for a while, so i thought about writing about my terrain system. i decided to create my own library for this because of the limitations from the other graphics engines i used. the first one was from jME, which was pretty slow, especially with my vegetation system included. 80 fps was not enough, because other parts of the game, when implemented, would have made it even slower.
so, i started working with c#, because i intend to participate at the Imagine Cup international competition, and massive terrains were a must have in my project.
this is how it took shape so far:
the most important thing which i needed the most was the continuously procedural texture generation for the terrain, based on heights and slopes – because the terrain is modifiable in real-time.
secondly, using quad trees and Dynamic Vertex Buffer Arrays ensures a very fast rendering – from 400 to 800 fps.
Posted in Game programming | Tags: 3D, c#, game, game creation, game engine, graphics simulation, nature scene, programming competition, realtime realistic grass, software
most of us had to deal with this at least once. from Windows Vista and later on, even if your OS is genuine, you must activate it in 60 days or so, or else it blocks itself, not letting you even login with any account, not even in safe mode; an activation window pops up when you try to login, and your computer becomes totally unusable.
a way to avoid this is by using the prompt and typing a certain command, which is “slmgr -rearm“, stated as legal by microsoft (as long it’s used no more than 3 times; it’s actually a security breach.. but shh! of course they won’t admit).
the problem is when you forget to use that command before the 60 days pass; well, the solution is quite easy, and it involves tricking windows in a very straing-forward way.. (another security breach, ah well..)
just follow these simple steps:
that’s it! now you should be able to use your windows again and not needing to activate it, while still maintaining it’s genuine state.
thanks to @hurrycane for suggesting me writing this blog post.
Posted in Funny stuff, Hacks, Uncategorized | Tags: 60 day trial, 7, activation, command prompt, genuine, hack, slmgr -rearm, vista, windows, windows fail
Posted in Funny stuff | Tags: computor, funny, tern on
more info here.
Posted in Gen (the game), jME graphics engine | Tags: 2D, 3D, bloom, bounding volumes, bounds, box, game, game engine, game tutorials, Gen (the game), graphics simulation, programming competition
yay! well, finally now i can start worying about things that really matter to me. it’s weird how everything turned out to be so easy in the end, and i was worried like hell.
Romanian – spoken – 10;
English – spoken – 10 ;
Romanian – writing – 10;
Mathematics – 8.2;
Informatics – 10;
Geography – 10;
and here’s something interesting.
Posted in Life, Uncategorized | Tags: exams, graduation
well, it seems that high school is over. that means… the exams are coming! darn! well, i thought i should lay off some steam and stop thinking about it, i’ve been loosing touch with real life for some time now. no more going out, no more programming on indie projects, no more writing on blog… that’s not good.
but soon it will all be over, and i’ve got big plans for this summer. first of all, i want to work on (and finish something like a beta version?) of the game i’ve started making with my good friend Teodor Dima. the only thing i can tell you now is that it’s name is Gen – The Room, and it will be a killer. i promise. everything is original about it, it doesn’t look like any game you’ve ever played. but enough about that.
the second thing i should focus on is finishing the tutorials. i’m having in mind going further with the Ardor3D engine, not jME, but i’m not sure about it yet.
third, guitar. i’m probably gonna make covers for some Death album, or gather some competent people so i could finally start a band. wish me luck.
Posted in Life, Uncategorized | Tags: Ardor3D graphics engine, game tutorials, graduation, guitar, jME graphics engine
previous lesson can be found here.
in this lesson you will learn about a few other primitives that you can use, besides the box. for now, you will learn about the sphere and the pyramid. moreover, a key new concept you will find is the BoundingVolume.
first, let me explain what is a BoundingVolume and why use it. well, this concept is the (among other) key to speed in 3D applications. let’s pick a normal day to day example. look in front of you, and you see certain objects. but you don’t have eyes on the back of your head so you can’t see what’s behind you. well, in a 3D environment, things are exactly the same. you don’t want to stress out your video card by drawing objects you can’t see, so you need to test if you can see it first, and if you can, then draw it. this is what the BoundingVolume does. it stores a very simple representation of the object itself (this way, it can even check faster if the object is in front of the camera or not), and tests if it can be seen, thus “telling” the video card to draw the object or not.
remember, optimization is an essential aspect if you want to create a fluent and fun game. there is an infinite number of ways to optimize a game, and some haven’t been even yet invented. as we go further with the lessons, i will point out some of the ones mostly used.
but first, let’s talk about some primitives. i think we all know what a sphere or a pyramid is. the important stuff is about the arguments (values you give to create those primitives).
modify the previous project (or create a new one to test your skills of what you have already learned) and use this source code:
package main;
import com.jme.app.SimpleGame;
import com.jme.bounding.BoundingBox;
import com.jme.bounding.BoundingCapsule;
import com.jme.bounding.BoundingSphere;
import com.jme.math.FastMath;
import com.jme.math.Vector3f;
import com.jme.scene.shape.Box;
import com.jme.scene.shape.Pyramid;
import com.jme.scene.shape.Sphere;
public class MainTutorial1 extends SimpleGame {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MainTutorial1 game = new MainTutorial1();
game.setConfigShowMode(ConfigShowMode.ShowIfNoConfig);
game.start();
}
@Override
protected void simpleInitGame() {
// TODO Auto-generated method stub
Box box = new Box(“my box”, Vector3f.ZERO, 3, 3, 3);
box.getLocalTranslation().set(0, 0, -10);
box.getLocalRotation().fromAngles(FastMath.QUARTER_PI, 0.5f, 0);
box.setModelBound(new BoundingBox());
box.updateModelBound();
rootNode.attachChild(box);
Sphere sphere = new Sphere(“my sphere”, 32, 32, 4);
sphere.getLocalTranslation().set(-10, 0, -10);
sphere.setModelBound(new BoundingSphere());
sphere.updateModelBound();
rootNode.attachChild(sphere);
Pyramid pyramid = new Pyramid(“my pyramid”, 7, 7);
pyramid.getLocalTranslation().set(10, 0, -10);
pyramid.setModelBound(new BoundingCapsule());
pyramid.updateModelBound();
rootNode.attachChild(pyramid);
}
}
now your screen should look something like this:
and if you’re inpatient, (we all are), you can do a quick run an this is what you shall see:
the first thing you notice is the sphere constructor and the way you use it:
Sphere sphere = new Sphere(“my sphere”, 32, 32, 4);
when you create a sphere, the arguments you use are the name, the detail (depth samples and radial samples, bigger numbers mean higher detail, in this case – 32 and 32, and the radius, in this case – 4).
like with the box, we set a position for the sphere, but the weird thing you see next is the most important; with the lines:
sphere.setModelBound(new BoundingSphere());
sphere.updateModelBound();
this is how we use the BoundingVolumes i described in the beginning of the lesson. you first create the model bound and then update the model (in this case – a sphere) to use it. pretty simple. the engine does everything else (like testing if the object is in front of the camera and/or to draw it) for you.
the same story goes with the pyramid:
Pyramid pyramid = new Pyramid(“my pyramid”, 7, 7);
when you create a pyramid you set the name, width and height. the next lines you notice are:
pyramid.setModelBound(new BoundingCapsule());
pyramid.updateModelBound();
you only have a limited type of BoundingVolumes, these are BoundingBox, OrientedBoundingBox, BoundingSphere, and BoundingCapsule, so you need to use the one which best contains the object you use. in this case, you can also use BoundingBox instead of BoundingCapsule.
that’s it, these are the basics of scene rendering optimization (there are tons of other methods, you can search about them on the Internet). in the next lesson you will learn how to use some other, more complex primitives and how to actually update their variables at each frame (like making them spin or move).
i had the chance to go to the infomatrix international competition this year and i’ve seen there some extraordinary software that really impressed me. one that i especially liked (from an experienced programmer and a user point of view) is currently being developed (a.k.a. coming soon..) by Adi Balcan with Casian Andrei, and i think you should know about it as well; it’s free and open source.
Web Geostatistics is a desktop application that displays website or application usage statistics in a 3D environment, with all the statistics based on the geographic location of the statistics events. It works on windows and linux operating systems, and it is based on the Qt toolkit.
Web geostatistics can create reports for:
- websites and/or a part of these.
- software for windows or linux operating systems and/or a part of these.
Example:
An application for displaying reports has a planet model and a line is drawn for each location where the users are using it.
If many users are in the same location, the associated line will have a greater length.
Main server adress: http://www.web-remote.com/geostatistics/
Posted in Uncategorized | Tags: 3D, google earth, programming competition, search engine, software