Difference between revisions of "Project1S16"

From Immersive Visualization Lab Wiki
Jump to: navigation, search
Line 1: Line 1:
Note: this is a preliminary description of the project, so you can get started on it. The final version of the project will go on line by 3/31 at 2pm and will also be discussed in class.
+
==Homework Assignment 1: Rendering Point Clouds==
 +
 
 +
In this project the goal is to read a number of 3D point positions from a file and render them onto the screen.
 +
 
 +
Besides becoming familiar with the math involved in rendering 3D scenes, this project will get you familiar with the tools and libraries that will be your friends throughout the quarter. These will include GLFW and GLew. You are free to use any other graphics or window management library, however you must contact us first for approval, as we want to make sure that you are not using a library that does too much of the homework for you.
  
 
We recommend that you start by getting your development software ready. More information on this is [[BasecodeCSE167S16 | here]].
 
We recommend that you start by getting your development software ready. More information on this is [[BasecodeCSE167S16 | here]].
  
----
+
==Reading 3D Points from Files==
 +
 
 +
A [http://en.wikipedia.org/wiki/Point_cloud point cloud] is a 3D collection of points, representing a 3D object. These point clouds are often acquired by laser scanning, but can also be acquired with the Microsoft Kinect and special software, or by processing a large number of photographs of an object and using Structure from Motion techniques (see [https://photosynth.net/ Microsoft Photosynth] or [http://www.123dapp.com/catch Autodesk 123D Catc]).
 +
 
 +
In this project we're going to render the points defined in OBJ files. Note that OBJ files are normally used to define polygonal models, but for now we're ignoring that and use the vertex definitions to render points, ignoring all connectivity data.
 +
 
 +
Write a parser for the vertices and normals defined in OBJ files. It should be a simple 'for' loop in which you read each line from the file, for instance with the [http://www.cplusplus.com/reference/cstdio/fscanf/ fscanf] command. Your parser does not need to do any error handling - you can assume that the files do not contain errors. Add the parser to the starter code.
 +
 
 +
Use your parser to load the vertices from the following OBJ files and treat them as point clouds:
  
The first homework project is aimed at getting you familiar with the tools and libraries that will be your friends throughout the quarter. These will include GLFW and GLew. You are free to use any other graphics or window management library, however you must contact us first for approval, as we want to make sure that you are not using a library that does too much of the homework for you.
 
  
For the first homework project, you will be:
 
  
    Writing a parser for the .obj file extension (more info to come)
+
<!--
 
     Rendering the 3D object defined by the .obj file
 
     Rendering the 3D object defined by the .obj file
 
     Manipulating the object (translation (moving), scaling, rotating (orbiting), etc.) using the keyboard, and
 
     Manipulating the object (translation (moving), scaling, rotating (orbiting), etc.) using the keyboard, and
 
     Implementing your own software rasterizer, which will be discussed next week.
 
     Implementing your own software rasterizer, which will be discussed next week.
 +
  
 
The OBJ file format
 
The OBJ file format
Line 43: Line 54:
  
  
 
==Reading 3D Points from Files==
 
 
A [http://en.wikipedia.org/wiki/Point_cloud point cloud] is a 3D collection of points, representing a 3D object. These point clouds are often acquired by laser scanning, but can also be acquired with the Microsoft Kinect and special software, or by processing a large number of photographs of an object and using Structure from Motion techniques (see [https://photosynth.net/ Microsoft Photosynth] or [http://www.123dapp.com/catch Autodesk 123D Catc]).
 
 
In this project we're going to render the points defined in OBJ files. Note that OBJ files are normally used to define polygonal models, but for now we're ignoring that and use the vertex definitions to render points, ignoring all connectivity data.
 
 
Write a parser for the vertices and normals defined in OBJ files. It should be a simple 'for' loop in which you read each line from the file, for instance with the [http://www.cplusplus.com/reference/cstdio/fscanf/ fscanf] command. Your parser does not need to do any error handling - you can assume that the files do not contain errors. Add the parser to the starter code.
 
 
Use your parser to load the vertices from the following OBJ files and treat them as point clouds:
 
  
 
==Rendering 3D Points==
 
==Rendering 3D Points==
Line 59: Line 60:
  
 
Add support for keyboard commands to switch between the point models.
 
Add support for keyboard commands to switch between the point models.
 +
-->

Revision as of 12:42, 31 March 2016

Homework Assignment 1: Rendering Point Clouds

In this project the goal is to read a number of 3D point positions from a file and render them onto the screen.

Besides becoming familiar with the math involved in rendering 3D scenes, this project will get you familiar with the tools and libraries that will be your friends throughout the quarter. These will include GLFW and GLew. You are free to use any other graphics or window management library, however you must contact us first for approval, as we want to make sure that you are not using a library that does too much of the homework for you.

We recommend that you start by getting your development software ready. More information on this is here.

Reading 3D Points from Files

A point cloud is a 3D collection of points, representing a 3D object. These point clouds are often acquired by laser scanning, but can also be acquired with the Microsoft Kinect and special software, or by processing a large number of photographs of an object and using Structure from Motion techniques (see Microsoft Photosynth or Autodesk 123D Catc).

In this project we're going to render the points defined in OBJ files. Note that OBJ files are normally used to define polygonal models, but for now we're ignoring that and use the vertex definitions to render points, ignoring all connectivity data.

Write a parser for the vertices and normals defined in OBJ files. It should be a simple 'for' loop in which you read each line from the file, for instance with the fscanf command. Your parser does not need to do any error handling - you can assume that the files do not contain errors. Add the parser to the starter code.

Use your parser to load the vertices from the following OBJ files and treat them as point clouds: