? Clipping with camera in 3D (Page 1) ● SmileBASIC Source Forums

Sign In

Register
*Usernames are case-sensitive
Forgot my password
What's going on?? See: Site Update March 2022

Clipping with camera in 3D

  • #1 ✎ 158 Vakore This is pretty general, but how would I perform camera clipping in a 3d space? I know how to do it in 2d, but 3d is causing me issues. For 2D clipping, I used the Cohen Sutherland algorithm. Anyone know how I can extend this into 3d? NOTE: This is what my projection code is(from 3d to 2d to project onto screen) var project = function(vert) { var x = vert[0]; var y = vert[1]; var z = vert[2]; var rY = rotate2d(x - camPos.x, z - camPos.z, camPos.ry * Math.PI / 180); x = rY[0]; z = rY[1]; var rX = rotate2d(y - camPos.y, z, camPos.rx * Math.PI / 180); y = rX[0]; z = rX[1]; f = 455 / z; x = x * f; y = y * f; return {x:x,y:y,z:z}; }; In short, what I am trying to do is prevent 'z' from being less than 0(can't just constrain it, that causes problems), as that is what causes everything behind it to go kabloo-y(yes, I have code that checks if three triangle points are behind the camera to prevent drawing in that case). What I currently need is a formula to make 'x' and 'y' what they would be when Z is 0, without overflowing(if that makes sense). Also, don't worry about rotate2d, that is just a function( I took from here: https://www.youtube.com/watch?v=g4E9iq0BixA Just assume camera movement I guess(I'm pretty sure I'm confusing you guys). Thanks in advance! Posted Edited by Vakore
  • #2 ✎ 1580 rando Intermediate Programmer I can make programs, but I still have trouble here and there. Programming Strength Third Year My account is over 3 years old Website Avatar Taboo I didn't change my avatar for 180 days Website I don't get what you mean by 3D clipping. Are you blocking the screen for UI or something, or are you just hiding some of the bg elements? Posted
  • #3 ✎ 158 Vakore Figured it out: var intersect3d = function(vert, vert2) { var x = vert[0]; var y = vert[1]; var z = vert[2]; var rY = rotate2d(x - camPos.x, z - camPos.z, camPos.ry * Math.PI / 180); x = rY[0]; z = rY[1]; var rX = rotate2d(y - camPos.y, z, camPos.rx * Math.PI / 180); y = rX[0]; z = rX[1]; var x2 = vert2[0]; var y2 = vert2[1]; var z2 = vert2[2]; var rY2 = rotate2d(x2 - camPos.x, z2 - camPos.z, camPos.ry * Math.PI / 180); x2 = rY2[0]; z2 = rY2[1]; var rX2 = rotate2d(y2 - camPos.y, z2, camPos.rx * Math.PI / 180); y2 = rX2[0]; z2 = rX2[1]; x = x + (x2 - x) * (0.1 - z) / (z2 - z); y = y + (y2 - y) * (0.1 - z) / (z2 - z); z = 0.1; f = 455 / z; x = x * f; y = y * f; return {x:x,y:y,z:z}; }; Anyone can use this without creditting me, though I got some formulas from the video, so maybe credit the creator of itn Posted Edited by Vakore
  • #4 ✎ 407 hakke RNG Hidden Easter Eggs QSP Contest 2 Contest Participant I participated in the second SmileBASIC Source QSP Contest! Expert Programmer Programming no longer gives me any trouble. Come to me for help, if you like! Programming Strength
    I don't get what you mean by 3D clipping. Are you blocking the screen for UI or something, or are you just hiding some of the bg elements?
    3D clipping is somehow a field of view in terms of near/far to prevent stuff between the actor and the camera from blocking in the remder
    Posted
  • #5 ✎ 1580 rando Intermediate Programmer I can make programs, but I still have trouble here and there. Programming Strength Third Year My account is over 3 years old Website Avatar Taboo I didn't change my avatar for 180 days Website
    I don't get what you mean by 3D clipping. Are you blocking the screen for UI or something, or are you just hiding some of the bg elements?
    3D clipping is somehow a field of view in terms of near/far to prevent stuff between the actor and the camera from blocking in the remder
    Oh ok
    Posted
  • #6 ✎ 1580 rando Intermediate Programmer I can make programs, but I still have trouble here and there. Programming Strength Third Year My account is over 3 years old Website Avatar Taboo I didn't change my avatar for 180 days Website Btw thanks for the video link! I understand how to code this method more than the triangle method thanks to this! EDIT: I realize now that this is probably what everyone uses, but triangles just connect the vertices lol Posted Edited by rando