Reference no: EM135187
This is an OpenGL assignment using C++. My compiler is MS Visual C++ express. Details: Work on a particle and mesh visualization tool. Data: Consider a point cloud as input data. Every point is described by a position p = (x, y, z) and a data value d = (d0,d1,d2). A point cloud has approximately 200-300 points.
Geometry: The points should be rendered a) as points / tiny spheres b) mesh c) grid. A ground plate should be the underground for the point cloud visualization.
For a) render points or spheres for b) find the neighbors of all points and connect them. for c) consider the entire area, which is covered by all points, as a grid. Every cell of the grid has an x and z coordinate and a dimension. Count the number of point cloud points p per grid cell and assign a z-value for the rendering with respect to the amount of p. You should get same sort of height filed.
Material, Rendering The color value should indicate the length of the vector d. The color should range from green (lowest value) to red (highest value). Camera: Trackball movement around the particle cloud. Picking: Every particle should be pickable. The name of the particle should be known after picking. (Finally, the value d should appear on screen. But you do not need to implement this part. We did not cover this in class.) Texture: Multi-texturing on the ground plate. This textures will show a picture of the objects from which we generate the point cloud and a depth map.
Other Details: It sounds to me that for the ground plate, you are looking for it to be like a mirror of the points cloud above it? Yes and no: the ground plate will show the particles and the object at the initial location. Thus, the image is static. Mesh: for connecting the spheres, it sounds like you are asking me to use primitive line commands such GL_Lines to connect the spheres. You can use LINES yes. Grid: Sounds like I need to capture the points x, y, z in a location array, do the same thing for the grid array, then run some sort of for-loop, whereby the point x,y,z is compared to the grid x,y,z, and if it falls inside its grid values, then some sort of counter gets incremented. Yes, something like this will work I don't understand what vector d is and what is the meaning of data value d = (d0, d1, d2). d will be additional data, e.g. velocity or pressure in 3D. It should indicate the existence of an additional vector with data. This data can be use to, e.g., change the color / material of the spheres. Picking: Is the name of the particle its value, d ? No, you can assign numbers or something else. The particles have not intrinsic name. You have to assign one for picking. The values in d can also be similar or equal. Thus, the values are not qualified to become a name. Multi-texturing - Goes back to my first question.Are you asking that this bottom plate be like a mirror?
how do you propose the data would be loaded? Would you hard code a random data set in the main program, or would you provide some way to import data from an external source?