- Teacher: Emmanuel Badier
This course aims at providing the fundamentals skillset required to develop scientific 3D applications (e.g. 3D simulations, VR/video game-based experiments). You will learn by practicing (coding in C# programming language and using the Unity game engine) following a step-by-step approach to let you become as autonomous as possible with 3D programming knowledge and technics.
The course is open to people interested in scientific 3D applications. Priority will be given to Master and PhD students (3 ECTS), but Post-Docs and other academic positions are also welcome to attend the course.
Program (Video Trailer)
During the course, we will code a 3D video game together from scratch in 40 hours. We will design and code almost everything: 3D environment, character controls & animations, camera control, music & sound effects, visual effects, user interface, game logic. While coding and using the Unity game engine (30h hands-on practice), some theoretical parts will be introduced to you at relevant moments:
- Programming (2h): reminder about programming basics and how computers work.
- Computer graphics (1h): introduction to 3D modeling and rendering.
- Computer animation (1h): introduction to kinematics in 3D space.
- 3D math (2h): vector calculus, tips and tricks to move objects in any ways.
- C# Programming (4h): C# programming language & object-oriented programming.
Prerequisites
You already know programming basics (no matter the programming language):
- Primitive data types
- Variables
- Logical and Arithmetical operations
- If/else conditions
- Loops (e.g. iterating over an array of data)
- Basic Input and Output operations (e.g. read/write files, read keyboard inputs)
- Functions
Learning Outcomes
At the end of the course, you will be able to:
- Understand the following concepts: computer graphics, computer animation, 3D programming, object-oriented programming, real-time simulation, simulation development, video game development.
- Master the scientific bases of 3D programming: vector calculus, common kinematics operations (translation, rotation, scaling, changing an object’s reference frame).
- Master the basics of C# programming language: primitive types, keywords, conditions, loops, memory management (garbage collector, references Vs copies), data structures (Array, List, Dictionary).
- Master the basics of object-oriented programming: classes, inheritance, polymorphism.
- Master the basics of video game development: setup 3D environment, character control, camera control, audio effects, visual effects, user interface, game logic.
- Use Unity game engine by yourself to develop 3D applications.
- Find useful resources by yourself (code, 3D models, animations, sounds, textures) to help you produce any kind of 3D applications (video games, simulations, experiments, …).
Evaluation
To get 3 ECTS, students will be evaluated regarding these criteria:
- Attendance to the classes (40h)
- C# programming homework (10h)
- Unity development homework (30h)