• Content count

  • Joined

  • Last visited

Community Reputation

134 Neutral

About Hulag

  • Rank
  1. Multiple planes collision response

    Ok, I got it working in a very basic way. Basically what I'm doing is doing many recursive box sweeps until I get zero collisions. I set my initial position and I just modify the velocity vector based on the sweep collisions and it works pretty good even with a character controller going REALLY fast. Now one idea I have for an optimization is that instead is to do a single box sweep the first time against, I apply a collision response on the closes collision, and then I just do overlap tests to do the collision response if I intersect more planes instead of doing many sweeps. Would that work ok? Thanks in advance.
  2. Multiple planes collision response

    Right now I don't have any issues with detecting collisions. I do a box sweep and in return I get all the collisions in that sweep with their .time property. But as you can see in the code right now I'm just dealing with the closes collision, the problem that I mention happens when I collide with more than one plane. One important note is that if the box sweep starts from a colliding plane, then that plane will be ignored. So basically my issue is how to do a proper FPS character controller collision response given a set of n collisions from a box sweep.
  3. I'm making a character controller for my FPS game but I'm having problem with the collision response. Right now my character glides just fine on the floor plane but as soon as I collide with more than one plane (for example floor and wall) I just go through one of the planes because I don't know how to deal with simultaneous collisions response (I just deal with the closes collision). My geometry is just a triangles soup and here is the code I use for the collision response: PLANE SlidingPlane(DesiredDest * Collisions[ClosestCollision].time, Collisions[ClosestCollision].plane.normal); CharacterPosition += DesiredDest - (Collisions[ClosestCollision].plane.normal * SlidingPlane.distance(DesiredDest)); How am I supposed to deal with multiple collision? Thanks in advance.
  4. FPS player collision and response.

    Right now I can collide a AABB with my geometry. I know the plane of triangle I collide against, I have the velocity of my player (velocity of the AABB) but the problem is that I don't know what to do for the response part. What can I do?
  5. Is there any good resource that shows the algorithms needed to implement a player controller for an FPS player? I need to use an AABB for the player so I can't use I think the first step would be to get the algorithm to sweep a box against a triangle but I can't find that algorithm anywhere, all I find are intersection tests. Thanks.
  7. FPS player collision

    I'm starting to add collision detection to my player of my FPS which already has a AABB, I need to know how to detect if the AABB of the player collided against my geometry with all the things that a FPS player needs to do (like go smoothly up stairs and not collide with small stones and such). Right now I want the collisions to be done on AABB (no OBBs), and I have seen tutorials and documents where they show the algorithms for things such as ellipsoids, spheres and such but I want to use AABB. Could anyone give me some pointers to information about doing that or maybe some algorithm? Thanks.
  8. OpenGL HDR Bloom and Tone Mapping

    Quote:Original post by Ysaneya HDRI and Blooming I realized that my implementation of the bloom effect was wrong. It seems like in a lot of litterature on the net, white papers or even gpu presentations, one has to run a bright pass filter on the raw fp16 buffer, blur it a few times, then add it back to the scene, and then apply tone mapping. And then i was wondering why in some of my scenes, i had very bright areas that didn't bloom. Well, that's logic: the bloom effect should come after tone mapping. The more i think to it, the more it makes sense: by tone mapping, you're basically remapping the brightness range from HDR to [0-1] so that it's displayable on your monitor. The areas on your screen that bloom, are the areas that end up with values higher than 1 after tone mapping; not before. An example: let's say that i have a very dark scene, most values being in the [0-0.1] range, but i have a small area that has a 0.2 color. After tone mapping, this area will end up being very bright and should bloom. If blooming is applied before tone mapping, the bright pass filter will discard a value as small as 0.2, and there will be no bloom. Quote:Original post by Anonymous Poster That’s exactly right; tone mapping should come before doing any blooming. The reason for that is that even though humans are able to see intensities from 10^8 to 10^-6 candela per square meter, the response range is much smaller so to be able to deal with those intensities we adapt our vision based on the intensities. So that should be the aim of tone mapping, not to just clamp values to fit a low dynamic range output but to simulate the adaptation process that takes place in humans. So in the end the blooming happens when light source intensity is higher than the adaptation level. If you want to make your scene look more realistic I suggest you use a local tone-mapping operator (such as Pattanaik’s operator) supposing that you have the time and desire to implement that.
  9. New from Valve

    E3 1998 Prey Trailer E3 1998 Prey Interview Current Prey deployable portals
  10. NPOT = Non-Power Of Two.
  11. #define ERRORINT 0xFFFFFFFF #define ERRORFLOAT static_cast<float>(0xFFFFFFFF) 0xFFFFFFFF won't be the value that you think it is in a 64-bit architecture. You should use 0xFFFFFFFFFFFFFFFF for 64-bit.
  12. No. I'm using RADIANCE .HDR files, RGBE.
  13. I'm not sure if this is the right forum so please move it to the proper place if this isn't it. I'm looking for a program that would convert sever 32bit per component HDR files into 16bit per component HDRs since filtering isn't supported for 32bit float textures in my videocard. Thanks.
  14. Expected identifier error.

    Quote:Original post by WitchLord It's a bit difficult to say, because you're not showing your code, but it sounds like you're calling AddScriptSection() in one function and Build() in another. If the std::string is locally declared in the function that calls AddScriptSection() it will go out of scope before the Build() method is called. The memory block that AngelScript is trying to compile as a script may thus contain non-understandable noise. By changing the declaration of the std::string to static, you're making the string stay alive beyond the scope of the function. You can also fix this problem by changing the call to AddScriptSection() to tell AngelScript to make a copy of the script buffer, in which case it will not matter if the original string is deallocated or not. The last parameter to AddScriptSection() does this. Regards, Andreas Yep that fixed the problem, I didn't know I had to tell to keep a copy. Thanks.
  15. Expected identifier error.

    Quote:Original post by mandrav Quote:Why does it work with static std::string and doesn't work with a normal std::string? Because probably the function that loads the script into the string has some bug in it... I'm using basically the same function that's provided in the AngelScript tutorial. Also if that was the case then the static std::string version shouldn't work either cause all I'm doing is defining the std::string variable where I load my script as static, the rest of the code remains the same.