Advertisement Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

354 Neutral

About CelticSir

  • Rank

Personal Information

  • Role
  • Interests

Recent Profile Visitors

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

  1. Just a general theory of how to approach it not so much how the game specifically done it, since it's unlikely that knowledge is out there, but i accept either one.
  2. Hi I am trying to understand how Cities Skylines did grid alignment based on the curvature of the roads. Here is an image example: Cities Skylines: Whilst grids are generally easy to understand, having them not aligned to x:y:z is what i am am not sure of how its done. I can't find much resources on it, does any one have any guidance on this?
  3. Hi I've been using unity for some time and i am trying to understand how the Sims allows users to import a texture/normal map to use on a floor or wall mesh. For my current setup i have a tile atlas, which is fine when its part of the game, but if user imported ones becomes a bit difficult to figure out the right way to do. In the Sims you can paint each triangle in each tile individually (i can already do this). But the only way i see doing it, is using submeshes but its still tricky to rearrange triangles - eg removing them from one sub mesh, adding to another submesh when the user wishes to repaint it. Is there a smarter way ?
  4. CelticSir

    Quadratic bezier curve how to find bounding box?

    Well i am unsure which one is the anchor point in the stack overflow answer which was the main confusing. I assumed p1 was the anchor/handle point.
  5. CelticSir

    Quadratic bezier curve how to find bounding box?

    Yeah the red and green points represent the bounds. I did add the range check but it made no difference: var extrema =; var tx = (p0.x - p1.x) / (p0.x - 2 * p1.x + p2.x); if (tx >= 0 && tx <= 1) { extrema.x = QuadraticBezier.Position(tx, waypointA.Position, waypointB.Position, anchorPoint).x; min.x = Mathf.Min(min.x, extrema.x); max.x = Mathf.Max(max.x, extrema.x); } var tz = (p0.z - p1.z) / (p0.z - 2 * p1.z + p2.z); if (tz >= 0 && tz <= 1) { extrema.z = QuadraticBezier.Position(tz, waypointA.Position, waypointB.Position, anchorPoint).z; min.z = Mathf.Min(min.z, extrema.z); max.z = Mathf.Max(max.z, extrema.z); } I am a little bit out of my depth as i am not good with maths. From what i can gather by the step by step info in my first post, i would need to find the equation of my bezier curve, not sure how i work that out, then find the derivative (theres only one derivative for a quadratic) then find the roots which will give me the stationary point on the curve. But my maths knowledge does not come close to even figuring out how to do that sadly.
  6. CelticSir

    Quadratic bezier curve how to find bounding box?

    I don't think the extrema is correct because if you draw a dashed line from the visual extrema, it doesn't seem to be in the correct place even if it wasn't reflected: And you're right it is mirror'd but i don't know why - i can't see my mistake.
  7. Hi I have this function which draws a quadratic bezier curve: public static Vector3 Position(float t, Vector3 a, Vector3 b, Vector3 anchor) { var oneMinusT = 1 - t; var sumA = oneMinusT * oneMinusT * a; var sumB = 2 * oneMinusT * t * anchor; var sumC = t * t * b; return sumA + sumB + sumC; } And i want to now find the bounding box for it. But i can't seem to get it to work. I used this equation: But i don't get the correct result. This is my code for it: var p0 = waypointA.Position; var p1 = waypointB.Position; var p2 = anchorPoint; var extrema =; var tx = (p0.x - p1.x) / (p0.x - 2 * p1.x + p2.x); extrema.x = QuadraticBezier.Position(tx, waypointA.Position, waypointB.Position, anchorPoint).x; var tz = (p0.z - p1.z) / (p0.z - 2 * p1.z + p2.z); extrema.z = QuadraticBezier.Position(tz, waypointA.Position, waypointB.Position, anchorPoint).z; Extrema = extrema; min = Vector3.Min(waypointA.Position, waypointB.Position); max = Vector3.Max(waypointA.Position, waypointB.Position); min = Vector3.Min(min, Extrema); max = Vector3.Max(max, Extrema); var center = (min + max) / 2f; var size = max - min; Bounds = new Bounds(center,size); This was the visual end result of it: Definitely not correct. The extrema point is the yellow sphere at the bottom. which is clearly not in the correct place, since its not even on the curve let alone the furthest point. Am hoping some one knows how to solve this - i am not the best at maths so am trying to figure this out but its quite a challenge. I also found this as a guide on how to calculate it but i don't know how i would do that mathematically: If any one is able to help with this i would be very grateful, have been stuck on this for some time now. Edit: Just to note i use the X:Z plane so my Vector3's all have Y position equal to zero.
  8. thank you, quad tree seems like the ideal solution
  9. Hi Say i have like 5000 quads all over the game map. And i want to place another one and check to see if it overlaps another quad. The quad can be any orientation, i was wondering what is fast way to find any quads that it might overlap. I can do a quad overlap check easily, but finding which ones to test against how ever is not so easy. And i am looking for a really performant way to do it. Any suggestions on the most efficient way to do it ?
  10. Hi I have a basic shader that has an applied texture, and a normal map. Now i want to make it "glisten" with like sparkling dots of light, based on the changes between camera and the ground. I am wondering what would the general logical approach be to do this ? I am still learning shaders and am trying to do this to learn more with them. But i've not mastered the way to think in terms of shaders yet so i am struggling to think of the logical approach to make the effect. Any suggestions ?
  11. Thanks for the links everyone. Very helpful
  12. Hi I've been wanting to learn shaders for a while. I use Unity3D and have always wanted to write my own shaders like water or my own PBR shader for example. But information on these topics seem quite sparse. I am not sure where to look to learn to program these things. The syntax is different to C# aswell (obviously). I really want to become an advanced shader programmer and make cool things. I'm pretty good at maths in general (first year in physics degree), but translating them into shaders and having understanding of them sufficiently is lacking. Google isn't really finding me much on it at all. What advice would you recommend ? Any books i should consider? Hope you can help
  13. Hi Sorry about the vagueness with units. Unity3D refers to everything by a unit which is equal to 1m. Just a habit i have picked up. I do have path finding, i use a navmesh, it has found the path. But i don't want it to follow the sequence of nodes so rigidly as it looks a bit unnatural. So i wanted it to accelerate up and down as well as take smooth curving paths. The units i use are: acceleration : 3 m/s^2 (this is also for slowing down) max speed : 15 m/s turn speed : 45 degrees/s The current issue is, if the turn is quite sharp and the object is going near its max speed. Then it will over steer the corner since its turn speed is too low for it. So i need to calculate what speed he needs to be going in order to take the corner giving his limited turn speed. If he has to stop completely to turn for very sharp corners (like a tank) thats fine.
  14. Hello I am a bit noobish with this but am trying to work out how to calculate the correct velocity of an object to have for an approaching corner. So the object has the following stats: acceleration : 3 units/s (this is also for slowing down) max speed : 15 turn speed : 45 degs/s I want to find the correct velocity to approach a corner so that, it will take the corner without over steering. If the object literally has to stop entirely and rotate thats also fine (kind've like a tank). I don't know the right formula to do this. Most google results include complicated aspects like drag and friction, mass etc and stuff that is too complex for my needs and then i don't know how to simplify it for my own needs. If it helps, i calculate the angle in degrees not radians (since i use Unity's Vector3.Angle). Hope some one can help, don't need code, just the math logic for it i can translate to code from that.
  15. Hi I have a basic setup currently where i create a quadratic bezier curve, and then i do 100 steps across the curve to calculate its distance. And from that i do distance / 3 to give me the total number of segments. Its pretty quick but its not a good solution for very large distances (too many segments) and then for very small distances (too few segments). Here is a visual issue of the problem: 7 looks reasonable (though i actually think it computed 6 my mistake), but for something much shorter 2 simply doesn't cut it neither would 3 or 4 to be honest. So i am wondering what is a common way to balance this so they are smooth regardless of length and sharpness of the angle ? I use C# but I'm just looking for a logical approach here not how to implement it in code since i'm sure i can handle that myself Thanks in advance.
  • Advertisement

Important Information

By using, you agree to our community Guidelines, Terms of Use, and Privacy Policy. 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!