Jump to content
  • Advertisement


  • Content count

  • Joined

  • Last visited

Community Reputation

1385 Excellent

About grhodes_at_work

  • Rank

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Are the cubes all the same size (as in, say, a voxel representation)? Let's say your player cubes are larger than some of your terrain cubes. Then, your test that only checks the containment of the corners will be insufficient. The player cube could entirely surround a terrain cube such that no corner is inside a terrain cube but the cubes would still volumetrically overlap. For example, see below....the player cube corners denoted by 'p', and terrain by 't':                                         p---------------------------------------p                                       |                                                |                                       |              t--------------t               |                                       |              |                 |               |                                       p-----------|--------------|------------p                                                      |                 |                                   t---------------t--------------t---------------t                                   |                  |                 |                  |                                   |                  |                 |                  |                                   t---------------t--------------t---------------t   One approach to deciding which plane to slide against would be to consider the outward-facing surface normal of all the faces of the colliding cubes. The collision/contact plane will be a plane between two cube faces whose normals point in opposite directions. The bottom plane of the black cube points down and the top plane of the red cube points up....opposite directions, so the bottom plane of the black cube would be your collision/contact plane.   grhodes_at_work
  2. grhodes_at_work

    OBB calculating extents

    Thank you for the additional background information. I now understand better what you are doing, and what your references are.   I hope I'm not overstepping your bounds to make additional suggestions and send additional references.   With respect to the separate transform object, I agree that you wouldn't want to create a new transform class. And, certainly, it does not necessarily make sense for OBB to inherit from transform. The OBB could have a property that is a transform object, and I wonder if it might still make sense to take advantage of the existing scene graph transform class. If you do something like this in your collision detection engine, then it might make it easier to sync your collision detection with the scene graph to be rendered. Or, the OBB shape could be a child of a transform object...making it easier to support compound shapes or different types of collision shapes. Many physics engines are set up sort of like this. I realize that rendering engines and collision detection/physics engines often have separate representations of the scene, but the collision/physics engines usually provide helpful built-in mechanisms to point back to a rendered scene graph.   I can think of another OBB reference, which might be useful if you can find a copy online. It is the OBBTree paper written by researchers at UNC Chapel Hill many years ago. Yes, its really old now, but is one of the early presentations of OBB for collision detection, and still useful. Here is a link to the paper. (I admit that I haven't ready it in a long, long time.)   http://www.cs.unc.edu/~walk/papers/gottscha/sig96.pdf   Pierre Terdiman also has done some work that you might find useful:   http://www.codercorner.com/Coder.htm - see OPCODE for example http://www.codercorner.com/RAPID_Hack.htm   Graham
  3. grhodes_at_work

    New version of ColDet

    Thank you for the post! I wonder if you would be willing to write a description of ColDet here, ideally something that is a bit more detailed than the short summary on the sourceforge page. And maybe link to some projects or YouTube videos demonstrating it use?   grhodes_at_work
  4. grhodes_at_work

    OBB calculating extents

    There are some things about your presentation that are worrisome to me, in terms of language use, variable names, and coding style. I offer some suggestions, which you can use if you find them useful.   First, you say that your OBB's having "3 perpendicular normals," but I wonder why you call them normals. Is it because the faces of the OBB are perpendicular to these vectors that you called them "normals?" Why not call them just local coordinate frame axes, or basis vectors, or basis directions, all of which are more general and more appropriate for vectors that define the rotation of a generalized shape? I would also suggest that you completely separate the dimensions of the OBB from the basis vectors in the constructor, for clarity. Embedding the size of the OBB inside the incoming basis vectors...is confusing. There is nothing in the variable names of the OBB constructor parameters that indicates the length of the edges is equal to the length of those vectors.   If I were to write a simple OBB class, it'd look something like this. This is just quickly written code, incomplete, not really designed, not tested, and not exactly what I'd use for a project. This code illustrates an idea. The idea is to suggest building your transformation (location and orientation) as a separate object and just include it in the OBB class. By building the transformation separately, you can re-use it to represent other things in the scene, too. Not just OBB's.   /// simple 3x3 matrix class, to be used to store orientation as a 3x3 /// rotation matrix class RotationMatrix3x3 { public: RotationMatrix3x3(const vec3 &xDir, const vec3 &yDir, const vec3 &zDir) { m_basisVectors[0] = xDir; m_basisVectors[1] = yDir; m_basisVectors[2] = zDir; } protected: vec3 m_basisVectors[3]; ///< x, y, and z direction basis vectors }; /// transformation class to be used to store translation and rotation /// relative to a parent or world Cartesian coordinate frame class Transform { public: Transform(const vec3 &translation, const vec3 &xDir, const vec3 &yDir, const vec3 &zDir): m_translation(translation), m_orientation(xDir, yDir, zDir) { } protected: /// translation vector, represented in a parent or world coordinate frame vec3 m_translation; /// orientation as a 3x3 rotation matrix, represented in a parent or world /// coordinate frame RotationMatrix3x3 m_orientation; }; /// Oriented Bounding Box class, which inherits its location and orientation /// relative to a parent or world coordinate frame via the Transform class class OBB : public Transform { OBB(const vec3 &translation, const vec3 &xDir, const vec3 &yDir, const vec3 &zDir, const vec3 &extent) : Transform(translation, xDir, yDir, zDir), m_extent(extent) { } protected: /// extent along local object basis directions vec3 m_extent; };   I hope this is somehow useful.   grhodes_at_work
  5. grhodes_at_work

    A Daft Statement

    I'm going to move this thread to the lounge. The discussion is somewhat interesting, philosophically, and there's been some meaningful interaction. But the thread is not in fact about math or physics, or game development. Therefore, it doesn't belong in the math and physics forum.   grhodes_at_work
  6. hi Grhodes. I am Javier. Last 2008 I submit an entry to the the list of physics engines. It was "simul-X". However , we have changed our name/website . If you could pls change your "Simul-X" entry to "SimVex" www.simvex.com , described as "Addon library for Havok enabling game-quality vehicle creation of any configuration, cars, motorcycles, aircrafts, etc" th...
  7. grhodes_at_work

    Weekly Sitrep: GDC Postmortem

    I liked using twitter. Would like to see that continue. When the next iPhone arrives (and like the world I am anxiously expecting an announcement in...June I think?), I'll upgrade and then should be able to do this sort of thing more easily.
  8. grhodes_at_work

    Weekly Sitrep: GDC Postmortem

    What also went wrong: Graham still hasn't written up his interviews and sessions. This thanks to nonstop crunch time at work since I returned...crunch time which continues even now.
  9. grhodes_at_work

    Yeah, me too.

    A couple of folks have mentioned how GDC coverage is still being processed. I'm in the same camp. I had a number of work related deadlines that took priority, and I am just now beginning to see relief from that. I should be able to actually begin transcribing some interviews tonight. I apologize to readers and those who I interviewed for the delay. It couldn't be helped, and I am trying to resolve it ASAP. Watch for my coverage soon.
  10. grhodes_at_work

    More juiciness

    Nice job, Mike. Thanks for the great coverage!
  11. grhodes_at_work

    First Impressions

    K, I agree with your comments on the Election Games talk. They weren't well prepared and as a panel discussion I didn't hear a clear message other than "you serious games developers should try to get the politicians to pay for games during the next election." It didn't need to take an hour for that message. Graham
  12. grhodes_at_work

    GDC - the story so far

    I'm out here at GDC again for 2009 (my tenth GDC). My employer is paying for the trip this year, so my focus has been attending sessions of interest to them. But, I have done a few interviews and am taking notes on some sessions that are of interest to gamedev members. I will write up articles an interviews in more detail once GDC is over. The interviews I've conducted have been with nVIDIA (discussing their new APEX tool as well as new cloth and destruction capabilities with PhysX), Havok (discussing their updated product line, including the new AI product), IDV (discussing SpeedTree 5, which includes a very nice PhysX integration to support flexible and breakable trees), and ImageMetrics (who offer compelling and affordable facial animation capture and rigging services). Highlights of the sessions I've attended have been: Serious Games Summit - I particularly enjoyed the talk by Straylight Studios discussing their upcoming SalonStar game (I believe this one could very well become a hit with its current target audience...13-18 year old girls), and the talk by Major Jeremy MacDonald of the Canadian Department of National Defense discussing his group's various experiments in making mod's of several different games for prototyping game-based training products. Allan Murphy's talk on the top 10 CPU and GPU performance challenges. Some subtle stuff going on here ranging from shader patching, slow depth rendering and other rendering related things to load hit store and L2 cache miss. Lighting with Purpose. This talk discussed some of the fundamental ways a game can use light to immerse the player, including Form (revealing the world), Feel (manipulating the player), Flow (using light to direct travel through both physical and emotional spaces as the game progresses), and Focus (using light to focus the player's attention). Examples were given from Black Rock Studio's PURE. Pete Isensee's "Beauty of Destruction." Though there were a number of sessions @ GDC this year discussing techniques for physics-based simulation of destructable game worlds, and though you might think I would attend such a session given my interest in physics, this one was in fact a talk about C++ destructors. Good stuff, really good stuff, here. I have learned a lot from Pete's past GDC talks on C++ and this one was no exception. If you write your games in C++, I would recommend you download this presentation when it becomes available (at gdconf.com proceeding section or possibly Pete's own website). Also take a look at his prior talks (linked from his website, http://www.tantalon.com/pete.htm). There's something for all C++ programmers to learn in there. Highly recommended. Experimental Gameplay Sessions. I never have time to sit for this entire presentation. It always overlaps with something else. But I was able to see the second half. This is always fun. Katamary Damacy was seen here for the first time in America some years ago (and might not have been released in America if it had not been presented here). Same with Rag Doll Kung Fu, Mark Healey's indie release before he and his partners founded media molecule and built LBP. This year, the team that built Sony's "flower" walked us through their game iteration process, and it was a lot of fun to see how they evolved the gameplay mechanisms to achieve a goal of presenting a safe, free game environment that was filled with love, peace, and harmony. (That is how they described their experience goals!) Hazardous Software, Inc., presented for the first time to a large public audience their "achron," a real-time strategy game in which the teams can freely move units back and forth in time (e.g., research advanced weapons in a future time line, then send them back to the past, or move back into the past to change the future after challenger's plan is revealed in the present). Tyler Glaiel presented his "Closure," in which static levels take on dynamic properties by hiding or revealing parts of the level by manipulating lights. Very cool. Kind of reminds me of Echochrome, in that the level structure behaves based on what you can see and cannot see (Echochrome using occlusion and Closure using light to reveal/hide things). I'll go to the Larrabee sessions tomorrow (at least one of them), and looking forward to that. Intel's graphics hardware offerings in the past have never been spectacularly well received (and I'm thinking not only of the most recent run of integrated chipsets, but all the way back to the i860), but I am rooting for them on Larrabee. An exciting time to be in graphics!
  13. grhodes_at_work

    GDC completion

    I am finally getting around to completing my GDC 2008 writeups. I was delayed last week because of a need to spend time on work projects during the evenings. Without further ado, I give you: CRYSIS Next-Gen Effects Sharing Code Microsoft Game Developer Day: DirectX Futures Graham
  14. grhodes_at_work

    work work

    I'm a bit delayed getting my final GDC content written up. I have had to spend a couple of evenings completing projects for my day job. Hopefully I'll have some gamedev time tonight, or at least by tomorrow evening late I'll have everything wrapped up. Graham
  15. grhodes_at_work

    GDC 2008 - just a few sessions left to summarize

    More GDC content is up: Procedural Data Generation in FAR CRY 2 That was an interesting lesson in practial procedural methods. Highly recommended, intuitive but useful advice in there. I've also posted: The Inter-Species Game Design Challenge, my last session from 21 February. Ian covered the Experimental Gameplay Sessions, and I don't have anything major to add there, so I'm not going to write that up. Tomorrow night, I'll write up my sessions from 22 February, and that'll be the last of my content for GDC 2008. I hope you all enjoyed the writeups and blogs! Graham
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!