Jump to content
  • Advertisement

Ronan085

Member
  • Content Count

    14
  • Joined

  • Last visited

Community Reputation

171 Neutral

About Ronan085

  • Rank
    Member

Personal Information

  • Role
    Programmer
  • Interests
    Programming

Recent Profile Visitors

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

  1. Ronan085

    Bilateral Advancement Separation Functions

    So on the Edge-Edge case I have the axis of separation but I can't figure out how to use that to get a separation value.
  2. Hello, I have recently implemented continuous collision detection using Conservative Advancement and I am currently trying to switch to Bilateral Advancement as described by Erin Catto in his GDC 2013 talk "Continuous Collision". However I am having trouble finding the right separation functions to use in 3D. I think I have the Vertex-Vertex, Vertex-Face, Edge-Face and Face-Face separation functions working correctly but I am unsure of the Vertex-Edge and Edge-Edge case. I have found (from the bullet forums) how to get the separation axis for the Edge-Edge case using: Vector3 EdgeA = closestFeatures.verticesA[1] - closestFeatures.verticesA[0]; EdgeA.Normalize(); Vector3 EdgeB = closestFeatures.verticesB[1] - closestFeatures.verticesB[0]; EdgeB.Normalize(); Vector3 Axis = Vector3::CrossProduct(EdgeA, EdgeB); if (Vector3::DotProduct(closestFeatures.verticesB[0] - closestFeatures.verticesA[0], Axis) < 0.0f) { Axis = -Axis; EdgeB = -EdgeB; } But I am unsure of where to go from here, I'm sure it is something simple that I am missing. If anyone who has implemented technique before could help me, it would be greatly appreciated. Thanks
  3. Hello, I am looking for some help in finding some concrete resources on continuous collision detection, my preferred medium is published books but web pages are perfectly fine too. I am not too fond of academic papers as their real world application are sometimes a bit lacking, however publications from game studios are great and I would definitely appreciate those. It appears to me that there is not actually much out there in terms of implementing CCD in a custom physics engine. I do not want to use an existing physics engine as I really enjoy the process of learning how everything is working behind the scenes. I have read/viewed the most obvious sources that I've come across from Googling and haven't quite gotten the information that I am looking for. Some of the sources I've used already are: - Game Physics Engine Development by Ian Millington: This book while a fantastic resource on implementing a physics engine, completely ignores continuous collision detection and only acknowledges discrete collision detection. - Real-Time Collision Detection by Christer Ericson: This only seems to glance over the topic in the section 2.4.3, it mentions swept volumes and indeed gives some hints on how to use swept volumes by providing further information on capsule collisions in 4.5 but it leaves quite a lot to the imagination on where to go from there. - Physics for Game Programmers; Continuous Collision talk by Erin Catto at GDC 2013: Erin approaches the problem from a different perspective with his continuous advancement algorithm however I cant exactly make out how to integrate this solution into my physics engine. - Various game engine/physics engine documentation & source code: They all seem to use either swept volumes or speculative contacts/continuous advancement or give the option of both so clearly these are the solutions to be using. - Various Stackoverlfow / Gamedev.net posts but these all seem to loop back to the previous sources. My need for CCD like others is to prevent tunneling on high velocity objects (bullets are my most prevalent case with velocity >500m/s). I would like to be able to have CCD work against other collders with CCD enabled, even though this will be a very costly process I still would like to have the option there for completeness. My current collision detection setup works as follows: 1) Any game object with a collider component that has moved this frame is added to an update set with the physics engine. 2) Each collider in this update is tested against the scene octree to get a list of potential collisions. 3) These potential collision are investigated with the GJK algorithm and have their contact points calculated if necessary. What I think could work: 1) Maintain a separate list at all times of colliders with CCD enabled. 2) If a collider with CCD enables is contained in the update set, then test its swept volume against the octree to get potential collisions. 3) Sort these potential collision by their distance along the swept volumes movement vector and choose the smallest distance as the collision. 4) Simply brute force (O(n^2)) against all other colliders with CCD enabled, as there wont be too many colliders with this special CCD property turned on I think brute force is an acceptable sacrifice. 5) Respond to this detected collision. (not entirely sure on how to do this response, how can I get the time of impact?) I should mention that everything takes place in 3D and AABBs are the bounding volumes that I use on my colliders for broad phase collision detection. Sorry for the wall of text and I look forward to hearing any answers or suggestions that anyone can provide. Thanks
  4. thanks @MJP all i had to do was bump sizeof(cbPerObject) up to the next multiple of 16 like you said
  5. Hi I've been trying to implement my own math library for use with DirectX11 and I've run into trouble creating the constant buffer. My data to be sent to the constant buffer looks like this [source] struct cbPerObject { MATRIX WVP; MATRIX World;   BOOL hasNormMap; BOOL isInstance; }cbPerObj; [/source] MATRIX is one of my custom data types and looks like this [source] struct MATRIX { float _a1, _a2, _a3, _a4; float _b1, _b2, _b3, _b4; float _c1, _c2, _c3, _c4; float _d1, _d2, _d3, _d4; } [/source] (I've left out all the functions MATRIX contains just to keep the post simple)   And when I try to create the constant buffer I keep getting an invalid parameter passed error, if anyone knows a work around for it would be great  thanks
  6.   really nice article thanks, thankfully XNAMath has a nice function XMQuaternionSlerp() so that will save me a ton of work;   The 4x4 matrix of an affine transformation is compose of a 3x3 matrix that represents a linear mapping (in the case of posture data this is a rotation) and a translation vector (a column to the right of the 3x3 matrix or a row below it, depending on whether you are using column vectors or row vectors). The other four components are always "0 0 0 1". Extract the rotation and the translation separately and convert the rotation to a quaternion (see JTippetts's post above).   thanks i was very clueless about how the different information was sorted in the matrix, any idea where the scaling information is
  7. rotating around something is not linear, since a rotation imply's movement in an arc around a point, rather than a straight line. doing slerp(sperhical linear interpolation) isn't easy with matrixs, quaternions simplify the mathematics(but are a bit hard to understand if you don't know complex numbers(still it can be a bit difficult to comprehend even then imo))       Ok so where do i get this rotation information if the only transformation information i have is stored in one matrix
  8. @Álvaro The file format im using is based off collada so the transformations are represented by 4x4 matrixs   @Squared'D ya ive been using that equation but the result are not what im expecting, my file file format has specified that all transformation interpolation should be linear
  9. Hey    Does anybody know how to properly implement linear interpolation for skeletal animation i just cant seem to get it to work Ive been getting some very interesting results when ive tried different ways eg model exploding apart when the animations starts, random translations and rotations happening If anybody wants to see any of the codes from my attempts at it just ask   Any help would be greatly appreciated.
  10. Hey    I recently got my simple game engine to load animations correctly and i was wondering should i playback animations by time past or by frames past    I am using skeletal animation btw   Thanks   -Ronan085-
  11. Ronan085

    Collada skeletal animation help

    I am just a bit confused on what information is exactly needed Would i be right to say that this is all i need besides the geometry :    Bone Name  Bone Parent  Joint Matrix  Bind shape matrix   Bind Pose   Joint inverse Bind poses  Root Bone  Bone Weights            Animation Time  Transformation :  Interpolation Type  Skinning Equation  or is there other things i need too
  12. Hey   I have recently been building a very very simple game engine for myself and i have run into alot of trouble trying to implement animation What i have been doing so far is converting from collada into my own file format and have been able to load static meshes. But i cant seem to understand how to load skeleton animations  I have read the following tutorials but cant seem to think of how to implement it my way http://www.wazim.com/Collada_Tutorial_1.htm http://thecansin.com/Files/COLLADA.pdf http://www.braynzarsoft.net/index.php?p=D3D11MD51 (Not collada but i wanted to see if they were similar enough to use that tutorial) if anyone know how to explain it i would greatly appreciate it.   Thanks  -Ronan085-  
  • Advertisement
×

Important Information

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

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!