# Ronan085

Member

14

171 Neutral

• Rank
Member

• Role
Programmer
• Interests
Programming

## Recent Profile Visitors

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

1. ## 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. ## Bilateral Advancement Separation Functions

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. ## Help Finding Continuous Collision Detection Resources

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. ## How to create a constant buffer with custom data structures

thanks @MJP all i had to do was bump sizeof(cbPerObject) up to the next multiple of 16 like you said
5. ## How to create a constant buffer with custom data structures

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. ## How do i implement linear interpolation

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. ## How do i implement linear interpolation

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. ## How do i implement linear interpolation

@Á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. ## How do i implement linear interpolation

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.

Thanks
11. ## Should i playback animations by time past or by frames past

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-

Thank you :)
13. ## 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
14. ## Collada skeletal animation help

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-