Lab Course - Exploring web based and native application development based on collaborative 3D content creation
Lehrveranstaltungsnummer:12.00022Room: bitstars Offices, Hanbrucher Str. 40, 52064 Aachen
Begin: TBA
Lecturer: Prof. Dr. Bernhard Rumpe
Supervising Assistants:
- Simon Heinen
- Jasper Heuser
- Jens Böttcher
In this lab the content and educational objectives of the module handbook will be worked out using an exemplary software project in the area of 3D content creation, data visualisation and Virtual Reality (VR) with focus on modern web technologies like React, GraphQL, mobile & browser-based 3D rendering and related technologies. Using some real world example use cases we will simulate a user-story driven development process to get as close as possible to realistic real world software development.
Topic/Description
Virtual reality and products like HoloBuilder do not only have exciting use cases in the gaming and movie industries, but are already successfully used in areas like construction, real estate, tourism, marketing and many more. For instance, creating virtual representations of construction sites makes it easy for project managers to inspect these at any time, leaving remarks and tasks for workers directly in the virtual rooms, which saves them huge amounts of time and money. Thus, making the authoring process (the creation of 3D content) for everyday users as simple as possible is the primary aim of HoloBuilder. Enabling the user to embed and combine 360° imagery, point clouds and 3D models right in their browser are the first steps to making this possible. As a participant in the software lab, you can be a part of this exciting development and work on interesting research ideas that one day could become part of products used in the real world.
We defined multiple technology tracks for the lab for you to choose from depending on your interest and previous knowledge of the listed technologies:
Web-based application development: Similar to existing products like HoloBuilder (https://app.holobuilder.com, software components in the fields of 3D rendering and virtual reality will be developed, which run completely standalone in the browser without the requirement of plug-ins. Three.js and similar existing libraries will be our foundation for working with completely browser-based 3D. Hence, the primary requirements for you will be to bring some initial experience in JavaScript (ideally ES2015) as well as an interest in 3D technologies.
Unity-based application development: Unity is the most used rendering engine and very popular especially for mobile games and 3D applications. Unity will be used in the lab to build small independent components needed for 3D and 2D data visualisation, based on the use cases and the interaction principles we will extract from real world example scenarios.
Related Links
- https://app.holobuilder.com - You can try the VR editor yourself to get an idea how it works
- https://youtu.be/M_9ipylE_iY - The web-editor running in the browser using WebVR on a Acer Windows Mixed Reality Headset
- https://youtu.be/Uvsi9hBA7ZE - HoloBuilder for Htc Vive (Annotation mode in 360 Scenes)
- https://youtu.be/CC9scV9S57g - Measurements in 360 images
Registration and Initial briefing
Allocation of the seats for this lab will be through the https://algo.rwth-aachen.de/fgi webpage.
Please provide information about your qualification, current experience and study situation (past development experiences, projects related to Unity- or Web-development, links to your GitHub account, Stack Overflow account etc.). If you have special interest in the topic of this lab you can send us an email or fill out the related field in the registration process. You will be informed about the first meeting in the weeks after the registration closes.
Requirements and technologies you will get in contact with:
- Solid knowledge of JavaScript (& HTML+CSS), the model-view-controller pattern as well as the basic principles of web development are required.
- Unity is a plus if you already know it.
- The general concept of code versioning, especially GIT and how GitFlow works.
- Based on WebGL and Javascript, you will work with the Three.js (http://threejs.org/), WebVR (https://webvr.info/) and general Javascript libraries like React to develop components of a web application.
- For communication GraphQL will be used and one or more teams will work on a backend that will likely be based on Apollo Server (https://www.apollographql.com/docs/apollo-server/) so that the frontend and backend teams learn how GraphQL works and what benefits arise with it in comparison to traditional REST APIs for example.
- The coding standards used in the lab will include ES2015 (https://en.wikipedia.org/wiki/ECMAScript#6th_Edition_-_ECMAScript_2015).
- Having attended the lectures Software Engineering, Web Technologies and/or Computer Graphics is a plus but not a must.
- Knowledge of 3D engines like Unity or Three.js is a plus.
- Knowledge of BIM and/or CAD technology is a plus.
- While most of this can be learned hands-on, please make yourself familiar with the above mentioned technologies at an early stage in order to be optimally prepared for the lab.
Contents and learning targets from the handbook of modules (B.Sc.)
- Colloquial phrases of the requirements
- Profound knowledge in a programming language
- Design of a software architecture
- Implementation according to the coding guidelines
- Generation and implementation of software tests
- Review of the results by inspections
- Systematic and structured documentation of the code as well as the previous requirements e.g. architecture
- Working with a modern development environment and frameworks
- Presentation of the developed results
- Group dynamic effects by collaborative working
Contents and learning targets from the handbook of modules (M.Sc.)
During the internship, the students should apply specialist knowledge and methods in regard of the conception, implementation and tests of software and hardware systems, as well as the conduct of experiments and measurements. Usually the tasks will be processed in small-group work and/or pair-programming sessions.- Ability to independently apply knowledge and methods from hardware and software development.
- Ability to work together in teams
Learning goals:
On the one hand the focus of this software project is to provide participants with profound development knowledge. This is done by creating a large software system that consists of several components. The participants will have to learn about the used programming language - if this is new - and more important the used technologies, libraries and frameworks. They also learn how to use modern development tools, create proper documentation and how to present the achieved results. To check the results systematically, the participants will do code reviews and write tests when possible (test-driven development). In short, the participants learn that a solution can be achieved only if interfaces carefully are planned, formulated and adhered to.
Participants will learn in particular the group dynamic effects associated with the division of labor (delayed results, participants come late and have to be "motivated" to collaborate). The occurrence of these effects is so far guaranteed, as each group has to manage its work themselves. In addition to the group-dynamic problems votes and presentations will be practiced. The presentation of results will be carried out in the meetings each week.