
Advertisement
CelticSir
Member
Content Count
283 
Joined

Last visited
Community Reputation
354 NeutralAbout CelticSir

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.

How does The Sims allow texturing from custom content?
CelticSir posted a topic in For Beginners's Forum
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 ? 
Quadratic bezier curve how to find bounding box?
CelticSir replied to CelticSir's topic in Math and Physics
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. 
Quadratic bezier curve how to find bounding box?
CelticSir replied to CelticSir's topic in Math and Physics
Yeah the red and green points represent the bounds. I did add the range check but it made no difference: var extrema = Vector3.zero; 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. 
Quadratic bezier curve how to find bounding box?
CelticSir replied to CelticSir's topic in Math and Physics
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. 
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: https://stackoverflow.com/a/1099291/5736835 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 = Vector3.zero; 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.

Fast way to find quads that overlap a position?
CelticSir replied to CelticSir's topic in For Beginners's Forum
thank you, quad tree seems like the ideal solution 
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 ?

Glistening snow how would you achieve this ?
CelticSir posted a topic in Graphics and GPU Programming
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 ? 
Where to get good knowledge to write shaders?
CelticSir replied to CelticSir's topic in Graphics and GPU Programming
Thanks for the links everyone. Very helpful 
Where to get good knowledge to write shaders?
CelticSir posted a topic in Graphics and GPU Programming
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 
Calculate ideal speed by approaching angle and object's turn speed?
CelticSir replied to CelticSir's topic in Math and Physics
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. 
Calculate ideal speed by approaching angle and object's turn speed?
CelticSir posted a topic in Math and Physics
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. 
Creating smooth quadric bezier curves for any length and angle?
CelticSir posted a topic in Math and Physics
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. 
How to recieve messages from server with TCPClient via Async
CelticSir posted a topic in Networking and Multiplayer
Hi I have set up my TcpClient to connect to my server and that works fine. But i am a bit confused how i read messages from the network stream with it continuously running via async, without ever closing the connection ? My TcpClient Manager class has: public async Task<bool> Connect(string address, int port) { try { await _tcpClient.ConnectAsync(address, port); IsConnected = true; return true; } catch(Exception e) { Debug.Log(e); return false; } } public async Task<int> Read(byte[] readBuffer) { if (!IsConnected) return 1; using (var networkStream = _tcpClient.GetStream()) { try { var bytesRead = await networkStream.ReadAsync(readBuffer, 0, readBuffer.Length); return bytesRead; } catch (Exception e) { Debug.Log(e); IsConnected = false; return 1; } } } So i thought to just run a coroutine and call Read constantly to get the most recent message, but that doesn't make much sense to me since a coroutine would be blocked with the await. How is this actually done? The MS Docs don't have very good Async examples with the TcpClient class so i don't know fully get how to keep calling Read correctly. 
How to sync a basic network game as close as possible between clients
CelticSir posted a topic in For Beginners's Forum
Hi I have a very basic prototype in unity of a game where by I fire a projectile with a obstacle in the environment that moves blocking its trajectory. Due to the fact that time between events is obviously not instant between clients i have a slight issue where one user shoots the projectile and hits the target, but the other player sees it miss the target entirely. Picture to explain better: The main problem is that the position of the moving obstacle is not in the same position "now" upon the firing event received for client B as it was for client A.This is not an FPS or something like that, the moving obstacle is part of the environment rather than another player. So i am thinking i should be able to get this moving obstacle sync'd far better than i could with player positions. Now i know this is not 100% solvable due to the nature of networks but am wondering what solutions i can implement to reduce the amount of error for this.

Advertisement