# CmasterG

Member

9

120 Neutral

• Rank
Newbie
1. ## Box Zoom

Hi! I mean zooming. I already have the corner points from my rectangle, and now I want to zoom in. The rectangle can be everywhere on the screen and I use perspective projection. Can you give me a link for the formulas ? I don't know how to calculate it. Thanks :)
2. ## Box Zoom

Hi! After my fit to screen question I have the next problem. Now I want to box select a section of my screen and then zoom in that selection. So I have four corner points (my rectangle which I can drag with the mouse) in pixel coordinates. I have a perspective projection. Can anyone help me with this? I have no idea how to do that. I guess that I have to calculate maybe a view frustum for my section?   Respectfully,                    CmasterG
3. ## Focus to object

Hi. Thanks it works now :)
4. ## Focus to object

HI! What I want is that the model (bridge) will fit to screen. So when I am too close with my camera I want that it zoom out so that the model fits to screen, and when my camera is too far away, I want that it zooms in so that the model fits to screen. I want sort of a focus function like when you press in Autodesk Maya the "F" Key, but with the difference that it should zoom in or out in the direction of the looking vector. Do you know what I mean?  For the position of the camera I use sphere coordinates instead of cartesian coordinates. So  I have two angles and a length. For zooming I only have to change my length to the object. What I did with the code was the following: I take my corner points of the model (bounding box) and transformed them from world coordinates in screen coordinates by multiplying the coordinates of the corner points with my world matrix, view matrix and projection matrix. Then I took the ratio between the size of the whole screen (screen_width, screen_height) and the size of the rectangle which is formed by the bridge on the screen ( height = max_y - min_y of the bridge in screen coordinates, width = max_x - min_x) and then I multiplied my camera length by this ratio. The result is that it is jumping back and forth when pressing the key for the fit to screen function. BTW: the bridge is always in the center of my "world". Do you have an idea why it is not working correct?
5. ## Focus to object

Hi! I have the following problem. I want to zoom to my object. I have the camera in sphere coordinates. So the camera position has 2 angles and a length. For zooming I want to change the length of the camera, so that the object has the maximal expansion on the screen. The object is a bridge. So it has 8 corner points, which I transformed into screen space. This is what I tried to get the length, but it is not working correct. Can anyone help me? Can anyone see the problem: float xmin, xmax, ymin, ymax, zmin, zmax; xmin = - m_width / 2; xmax = m_width / 2; ymin = -(m_height * scale_factor - m_height/2); ymax = m_height /2; zmin = -m_length / 2; zmax = m_length / 2; std::vector<D3DXVECTOR4> points; D3DXVECTOR4 point; point = D3DXVECTOR4(xmin, ymin, zmin,1.0f); points.push_back(point); point = D3DXVECTOR4(xmin, ymin, zmax, 1.0f); points.push_back(point); point = D3DXVECTOR4(xmin, ymax, zmax,1.0f); points.push_back(point); point = D3DXVECTOR4(xmin, ymax, zmin,1.0f); points.push_back(point); point = D3DXVECTOR4(xmax, ymin, zmin, 1.0f); points.push_back(point); point = D3DXVECTOR4(xmax, ymin, zmax, 1.0f); points.push_back(point); point = D3DXVECTOR4(xmax, ymax, zmax, 1.0f); points.push_back(point); point = D3DXVECTOR4(xmax, ymax, zmin,1.0f); points.push_back(point); D3DXMATRIX worldMatrix, projectionMatrix, viewMatrix; m_Begrenzung->GetWorldMatrix(worldMatrix); m_D3D->GetProjectionMatrix(projectionMatrix); m_Camera->GetViewMatrix(viewMatrix); for(int i = 0; i < points.size(); i++) { D3DXVec4Transform(&points.at(i), &points.at(i), &worldMatrix); D3DXVec4Transform(&points.at(i), &points.at(i), &viewMatrix); D3DXVec4Transform(&points.at(i), &points.at(i), &projectionMatrix); points.at(i).x = points.at(i).x / points.at(i).w; points.at(i).y = points.at(i).y / points.at(i).w; points.at(i).z = points.at(i).z / points.at(i).w; points.at(i).w = 1.0f; } xmin = xmax = points.at(0).x; ymin = ymax = points.at(0).y; for(int i = 1; i < points.size(); i++) { if(points.at(i).x < xmin) xmin = points.at(i).x; if(points.at(i).x > xmax) xmax = points.at(i).x; if(points.at(i).y < ymin) ymin = points.at(i).y; if(points.at(i).y > ymax) ymax = points.at(i).y; } float width, height, scale, length; if(abs(xmax) > abs(xmin)) width = abs(xmax); else width = abs(xmin); if(abs(ymax) > abs(ymin)) height = abs(ymax); else height = abs(ymin); if(width > height) scale = 1/width; else scale = 1 / height; length = m_Camera->getLength(); m_Camera->setLength(length / scale);
6. ## Game development, which path should i choose?

I think it is a good idea to make tutorials for OpenGL or DirectX. Have a look at rastertek.com or http://www.opengl-tutorial.org/ It is good to know this low level things, because then you can work with every engine you want to.   Unity is very simple. It depends on what do you want to make. If you want to make a game just for fun than take Unity. You can make great games with it, but when you want to become a game programmer than learn OpenGL or DirectX.
7. ## Why companies still use C++ and what should I learn then

Hi! I am the same opinion. At university I started with C, then with Assembly, then Java.  C++ and C# I have learned on my own. It was really easy when knowing C. So I think it is good to know a low level language, because it is very easy then to learn higher level languages. Now I can also Python, which I have also learned on my own.
8. ## Focus to object

Hi! I have the following problem. I want to zoom to my object. I have the camera in sphere coordinates. So the camera position has 2 angles and a length. For zooming I want to change the length of the camera, so that the object has the maximal expansion on the screen. The object is a bridge. So it has 8 corner points, which I transformed into screen space. This is what I tried to get the length, but it is not working correct. Can anyone help me? Can anyone see the problem: float xmin, xmax, ymin, ymax, zmin, zmax; xmin = - m_width / 2; xmax = m_width / 2; ymin = -(m_height * scale_factor - m_height/2); ymax = m_height /2; zmin = -m_length / 2; zmax = m_length / 2; std::vector<D3DXVECTOR4> points; D3DXVECTOR4 point; point = D3DXVECTOR4(xmin, ymin, zmin,1.0f); points.push_back(point); point = D3DXVECTOR4(xmin, ymin, zmax, 1.0f); points.push_back(point); point = D3DXVECTOR4(xmin, ymax, zmax,1.0f); points.push_back(point); point = D3DXVECTOR4(xmin, ymax, zmin,1.0f); points.push_back(point); point = D3DXVECTOR4(xmax, ymin, zmin, 1.0f); points.push_back(point); point = D3DXVECTOR4(xmax, ymin, zmax, 1.0f); points.push_back(point); point = D3DXVECTOR4(xmax, ymax, zmax, 1.0f); points.push_back(point); point = D3DXVECTOR4(xmax, ymax, zmin,1.0f); points.push_back(point); D3DXMATRIX worldMatrix, projectionMatrix, viewMatrix; m_Begrenzung->GetWorldMatrix(worldMatrix); m_D3D->GetProjectionMatrix(projectionMatrix); m_Camera->GetViewMatrix(viewMatrix); for(int i = 0; i < points.size(); i++) { D3DXVec4Transform(&points.at(i), &points.at(i), &worldMatrix); D3DXVec4Transform(&points.at(i), &points.at(i), &viewMatrix); D3DXVec4Transform(&points.at(i), &points.at(i), &projectionMatrix); points.at(i).x = points.at(i).x / points.at(i).w; points.at(i).y = points.at(i).y / points.at(i).w; points.at(i).z = points.at(i).z / points.at(i).w; points.at(i).w = 1.0f; } xmin = xmax = points.at(0).x; ymin = ymax = points.at(0).y; for(int i = 1; i < points.size(); i++) { if(points.at(i).x < xmin) xmin = points.at(i).x; if(points.at(i).x > xmax) xmax = points.at(i).x; if(points.at(i).y < ymin) ymin = points.at(i).y; if(points.at(i).y > ymax) ymax = points.at(i).y; } float width, height, scale, length; if(abs(xmax) > abs(xmin)) width = abs(xmax); else width = abs(xmin); if(abs(ymax) > abs(ymin)) height = abs(ymax); else height = abs(ymin); if(width > height) scale = 1/width; else scale = 1 / height; length = m_Camera->getLength(); m_Camera->setLength(length / scale);
9. ## Blur + multiple Pixelshader

Hi!   I have the following problem. I have an object, which I have to blur and this object is in sort of a box, but only in the edges of this box (box is an open box). To blur the object, I render it in a texture -> then in the next step I downscale this texture -> then I blur it vertically and back to a texture -> then I blur this texture horizontal -> then I scale the texture up and render it to the screen   To draw also the box object, I render this object to another texture but only with lighting and then I draw this with additive blending on the screen.   The problem is that the blurred object is now transparent, and I have lost my depth values. So I have the choice if the box object is rendered over the blurred object or the other way round. But I want that the blurred object is inside the box object.   How can I make this the right way. I guess it is impossible the way I do that. Has anyone an idea?   I am using C++ with DirectX 11.   Respectfully,                 CmasterG