Hot answers tagged

15

First off, setting up a cross-platform Ogre and using a Git repository do not have any direct relationship. The Source Control Management (whether it's Git or not) is used to synchronize multiple computers no matter if all the team use the same OS or different OS’s. If you want to use Source Control Management with your friend, you will need a place to ...


13

The first option is what I would use. One model for everything. It's totally possible to have an interior and exterior of a model. Just like it's possible to have concave shapes. There's no double normals or double sided faces. Imagine a slice out of a crappy ship like this: (I have no idea why the floor isn't flat, I only realized that after I posted it...)...


10

It turns out the solution is much simpler than the original attempt, and there's no need for subclassing if you're just testing one ray collision. Here's all you must do to retrieve the collision vector: btVector3 btFrom(camPos.x, camPos.y, camPos.z); btVector3 btTo(camPos.x, -5000.0f, camPos.z); btCollisionWorld::ClosestRayResultCallback res(btFrom, btTo)...


9

For the record, my experience with physics is using Chimpunk in a 2D game engine, but I'm pretty sure this concept translates into 3D just fine. I'm assuming that your character is a physics body with weight and such. The best way to do this is to do a very simplified simulation of walking. Think of it like this: If you're standing, your feet have a lot ...


9

Although I haven't worked with the bullet physics engine specifically, I've done something very similar in another physics engine. The way that I solved it was to set the rigid body's linear velocity instead of translating it directly. Movement and collisions were then automatically handled by the physics engine update phase. From the documentation there ...


7

I actually just finished writing this for my capsule object yesterday. You just need to call btRigidBody::setAngularFactor(btVector3(Yaw, Pitch, Roll)); Calling it with all 0s will prevent your object from rotating on any angle. Here is where I originally found the answer: http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?p=&f=9&t=2956 (In ...


7

It seems that most engines do have those rotation methods. XNA has one in it's Vector3 struct. // Returns a new Vector3 that results from the rotation. public static Vector3 Transform ( Vector3 value, Quaternion rotation ) three.js has the function exactly as you wrote it. In Unity's case, their Vector3.Rotate() method might be internally ...


6

Your alpha-blended objects should not participate in a depth pre-pass. For a given final pixel, its color will be a number of colors blended together at different depths: the portion of the color furthest away from the camera will either be the sky/background or an opaque object, and all the other contributions will be from semi-transparent objects. And if ...


6

Got it: The Geforce4 MX with the newest-available nVidia drivers (circa 2006) doesn't support the glTexEnv approach to blending source and destination textures. At least, not in hardware. Drawing the simplest shapes results in crippling slowness. However, it does appear to support GL_BLEND combined with glBlendFunc in hardware. Solution: Instead of the ...


5

For those who had the same problem I did, where you've installed the OGRE exporter in Blender 2.6 but still don't get .material files, the reason for this is in the configurations. When you are in the export menu (File > Export > Ogre3D), in the lower-left corner there are configurations. By default, "Separate Materials" is checked. Uncheck this and you're ...


5

http://www.ogre3d.org/tikiwiki/Simple+Text+Output&structure=Cookbook Simple as adding the 40 lines class file to your project loading a font of your choice and calling TextRenderer::getSingleton().printf("text", "Last FPS: %f", renderwindow->getLastFPS()); from your update method body. Don't forget to initialize and remove the text overlay! EDIT:...


5

The quickest/cheapest way to get up and running would be to use the Unity engine for the client, and something like Photon as your socket server backend. If you're looking for something with more off-the-shelf support, there's things like Hero Engine. If you're asking which language to use, I'm assuming you're not experienced enough to pull off starting ...


5

All of the engines you've listed are or already contain real-time renderers, because that is what a game engine must contain, by definition. A game must run at a framerate of at least 24 frames per second (for the perception of smooth motion), and for more intense, action filled games, that framerate requirement goes up to 60. Those framerates are ...


5

Install the blender2ogre add-on in Blender and you can select what you want to export. You just need to place the python script in the scripts/addons folder where you have Blender installed. Once you are ready to export, go to File->Export->Ogre3D (.scene and .mesh).


5

Writing up an answer from my comments as I believe it's not such a crazy idea after all. Assumptions The "Up" direction should not matter in these calculations You have found the object in focus and you can ray cast from its front just like you did with the character The "Up" direction is Z. (This could be Y depending on who you are talking to or what ...


5

Yeah you can have a massive world. But you're going to need to partition it spatially for a variety of reasons. Floating point accuracy tails off It becomes computationally impractical to update deterministic objects across a massive world without some form of spatial separation Networking becomes increasingly more difficult the more distance between ...


5

Frameworks in C++ tend to use their own string implementation to solve Unicode and localization issues. Unicode support in C++ is generally not that good even in C++11. std::string can't store Unicode characters. If you want to take advantage of unicode and probably localization you may want to use their string.


4

Ogre3D actually comes with a scenemanager called PCZSM, the Portal Connected Zone Scene Manager, which is meant exactly for the purpose of portal-based occlusion culling. It should fit very well with your project. My usage experience is that it's very robust, although documentation is sparse - mostly it's in the form of forum posts.


4

Despite the facts that is not recommended to delete entities and scenenodes yourself, did you take a look at the Ogre SceneManager documention ? In this document you can find the following functions to remove & destroy entities: void destroyEntity (Entity *ent) Removes & destroys an Entity from the SceneManager. void destroyEntity (const String &...


4

I suspect they're synced animations, since that would under most circumstances (i.e. where characters are on the same floor level) be the easiest to implement. You can see that the Hitman animations are actually not particularly well synced, even so (swordstick scene). It was already a fairly revolutionary game for it's time so I think players were willing ...


4

This is known as 3D picking, and usually involves some kind of raycast from a point in screen space (the cursor position) in the camera's forward vector direction. For some Ogre tutorials, check those links: http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Intermediate+Tutorial+3 http://www.ogre3d.org/tikiwiki/ThreeDeeObjectPicking http://www.ogre3d.org/...


4

One way you can do this is to setup a sphere ghost collider and detect when something collides with it. Then you can change the gravity vector to point towards the centroid of your planet for anything that collides with it that you want gravity to affect. A much harder way to do this would be to concoct your own constraint. The constraint would be very ...


3

Ok, as exporting Blender scene and meshes to Ogre using blender2ogre module does works fine for me, I will try to run a very simple test in order to help you point out what is going wrong on your side. So in order to get something very simple to compare with, I will export the initial Blender scene (the one with the simple cube) without changing anything. ...


3

Let me give you the bad news straight away: there is no fix for this, not in Ogre, not in any engine. This website explains the problem nicely: http://blogs.msdn.com/b/shawnhar/archive/2009/02/18/depth-sorting-alpha-blended-objects.aspx However, a solution in your case could be to first render all your opaque objects, turn off depth writing, render the ...


3

If that's what SdkTrayManager uses, then that's what SdkTrayManager uses. There's no getting around it without actually modifying the code.


3

Have you checked gamekit? Not the irrlitch version (deprecated) but the ogre3d one, also known as ogrekit. It's a whole set of libraries that cover most of the aspects of a game engine. Code is super clean (imho), project setup is awesome (imho) and as a bonus it works out of the box on several platforms. Best part, you can cut off what you don't need or ...


3

I finally did it using the following pseudo-code: parent = sceneMgr->getRootSceneNode()->createChildSceneNode(); child = parent->createChildSceneNode(); child->attachObject(entity); child->translate(10,0,0); parent ->rotate(Ogre::Quaternion(Ogre::Degree(10), Ogre::Vector3(1,0,0)) , Ogre::Node::TransformSpace::TS_WORLD); For anyone who has ...


3

I just import the Blender file with Spatial spatial = assetManager.loadModel("Models/sample.blend"); For me that works great. (Dont forget to remove the belnder light and camera :) )


3

bool front = dot( normalize( rayDirection ), normalize( objectForward ) ) < -0.5f; Does not break, simpler and faster than cross. Using acos you can calculate the exact angle.


Only top voted, non community-wiki answers of a minimum length are eligible