OpenGL代写:CA1ComputerAnimationandVisualisation


Introduction

这次需要代写的作业是一个OpenGL的3D小游戏,另外编程的时候不仅需要使用QT,还需要使用提供的NGL图形库来开发。

Introduction

OpenGL is a relative low-level 3d API which does not support object/scene
management. This is usually left to the user of the API. For example,
importing and exporting data to and from OpenGL has to be implemented by the
application programmer. Hierarchical structures although indirectly supported
using Push and Pop matrix operations have no direct support in OpenGL.
You task is to develop a set of C++ classes / data structures and algorithms
that provide a high level OpenGL object/scene management for one of the
following:

  1. Develop a small library that provide an interface that allows the simulation of real world physic such as gravity, friction springs; To demonstrate the library a simple particle system with physics and collisions could be written.
  2. A simple 3D game using OpenGL which should allow for the detection of object collisions in 3D space and user control of the game characters. (3D space invaders would be a good example).
  3. Develop a framework that allows the simulation of a Craig Reynolds-like flocking system using OpenGL. The system should allow for any number of boids to be added to the scene, with detection of objects within a scene.
  4. Develop a system that provide an interface that allows L-systems (Lindermayer systems) based modelling of plant like structures using OpenGL. The L system should read in the grammar of the system from a file.
  5. A simple raytracing framework that will read a scene file and render out the scene using materials / lights supplied in the scene file.
  6. Other project Ideas may be discussed with the unit leader.

Note

You are required to use the NGL graphics library as part of the assignment, if
more functionality is required a software update request can be made to Jon
Macey or you may use other libraries but this must be justified in the design
of the project. It is also expected that the project uses the main Qt
development system and is capable of running within this environment. Third
party libraries such as GLUT should not be used, however if you are developing
a game SDL could be considered.
It is suggested that the program be written using C++ and OpenGL however any
system may be used for the final program.
For example Python exporting to renderman for rendering would be acceptable,
however realtime visualisation with OpenGL for the system would be a bonus.

Part 1: Research and Design

For the first part of the project a report should be submitted containing
initial research into the topic including references to sources and initial
design consideration for the project. Marks will be awarded for clarity of
research and use of images / algorithms. Initial design of the C++ data
structures and algorithms required should also be carried out however no code
is expected to be submitted at this stage. Note that it is expected that most
of the design will be in the form of a “programming sketch book” using hand
drawn data diagrams, a full written report is not expected at this stage. The
main emphasis is the research and design into the area chosen. At this stage
we are more interested in Code design and the algorithmic approach to the
problem and not the cosmetic / artistic design of the program.

Part 2: Implementation

The 2nd part of the assignment involves the implementation of the system based
on the initial research and design. As software design is an iterative process
it is expected that the actual program will have evolved from the initial
report and this process should be reflected on in the final project report.
Marks will be awarded for good use of C++, data structure design and
documentation of the code with respect to and algorithms and techniques used.
The program must be able to be configured by the use of a text based
configuration file to set-up initial program states or values.

INTENDED LEARNING OUTCOMES

This assignment will allow you to demonstrate your ability of the following
learning outcomes.

  • understand and apply Object Oriented concepts and techniques to the design and implementation of CGI systems
  • demonstrate an ability to analyze and select suitable data structures for program development.
  • demonstrate an ability to understand and implement computer animation related algorithms using OOP
  • develop GUI based systems using a suitable API for animation

Marking Scheme

  1. Initial Program design and background research report.
  2. Code Documentation / Design and report on algorithms used.
  3. Use and understanding of Object Oriented Programming.
  4. Use and understanding of OpenGL / Computer Graphics API’s.
  5. Reading Config file to configure the program.
  6. Following the NCCA coding standard.
  7. Project specific, Use of a GUI, efficiency and/or Visual impact.

文章作者: SafePoker
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 SafePoker !
  目录