How to effectively develop VR applications? Here's my opinion.
Human time is precious and irreplaceable. Therefore, it should be in everyone's interest to use it effectively - especially the working part. Inefficiency at work does not pay for several reasons...
- It prolongs and delays what needs to be done
- It makes development more expensive - higher costs for the contracting authority / lower reward for the executor
- It makes less time free time for self-development and personal life
Efficiency is achieved mainly by automating repetitive parts and making maximum use of available resources. In other words, it's not about working hard, but smart. In this article, I will explain my approach to the development of applications for virtual reality, anyway the same principles may be applied for any kind of a virtual product development (game, web...).
"Template" vs "premium" VR application
The difference between a template and a premium product can be best explained with the example of a website. After all, everyone has seen more websites than VR / AR applications, and apparently also a lot of readers have some personal experience with a demand for a website.
There are three basic ways to create a website:
- Using a template and a ready-made backend system (eg. Wordpress) [→ foreign graphics and code]
- Development of a complete custom website [→ own graphics and code]
- Using a hybrid approach [→ custom graphics on an open backend solution / template graphics on a custom backend solution / modification of a foreign template / open backend solution]
You will pay a low hundreds dollars for the first variant and the result will be a really beautiful and animated website. On the second, you will easily invest tens of thousands and you will hardly achieve the visual quality of the website from the first variant. How is it possible? Quite simply - even though the template from the first case cost, for example, only $50, its author can sell it calmly 1,000x - and that defines the total time investment he can invest into creation of the best $50 template. The graphic designer creating the design for one particular website can hardly compete the quality.
The same is true for the backend (server) part. Wordpress and other content management systems offer a very wide range of general and additional specific features. Without a single line of code, in a matter of minutes, for the price of a few hours of a web developer, it is possible to run a fully functional website.
Theoretically, using templates and ready-made solutions sounds great, well, the reality is a bit more complicated. By its very nature, most general solutions are very functionally straddled, resulting in excessive robustness and often very poor performance. Not to mention the need for all sorts of ugly hard to manage modifications in order to handle it exactly what the client expects from it. In practice, it is almost always necessary to subsequently optimize the purchased solution in terms of performance. Unfortunately, additional optimizations are often necessary also in a case custom-made solutions. Finding quality coders is simply difficult.
As a result, the quality and choice of a suitable solution depends on the specific website requirements. However, no matter which path you choose, it's always essential that the developer has a thorough understanding of the tools he or she uses and is able to defend his or her practices. The worst are those who, instead of using suitable solutions, constantly try to modify (at any cost) one concrete solution they know and use everywhere. Websites constructed in this way are very hard to manage.
The most effective way to develop is so-called component-based software engineering - when you develop a website, you mix independent general components (your own / 3rd party / open source) with unique components written specifically for the website being developed. After all, most parts and functionalities are repeated on every website, so it is enough to write them properly and cleverly only once and then only replicate wherever it is needed.
VR / AR Development - own XR Framework and code, environment according to the situation
Such components are also available in the Unity game engine, which I use for development. For example, cross-device XR drivers (XR stands for AR / VR) are very well thought out and allow really high freedom of work. On the other hand, the high fragmentation into many components of different properties increases the time required for implementation and the probability of bugs. I eliminate both with a my own XR Framework, which includes performance-optimized interconnection and configuration of basic XR components, while overseeing selected group of potential bugs and helps with motion sickness elimination. This allows me to set up any functionality very quickly, while knowing exactly what's going on in the background . It is advisable to have similar tools for any often repetitive functionality or element.
Something else applies to 3D models that create environments. Whenever possible, I always use third-party models. They are more favorable for the client in the ratio of quality / cost / speed of application delivery, and I am also able to very quickly verify the quality and performance component of used models (polygons, shaders used, etc.). I order a work from 2D and 3D graphics designer only in moments when there is no suitable model anywhere on the market, or the client wishes to use unique / identical models.
Where to get 3D models for games and VR / AR applications?
There are 3 ways to obtain 3D models,
- Custom modeling in 3D graphic editor
- Using photogrammetry with subsequent editing
- By purchasing ready-made models
When choosing a specific method, it is advisable to use common sense - I often meet people who demand a 3D scan of a body that can be very easily modeled (usually a 2D sketch with rotation around the axis is enough), or conversely modeling long days something they can buy already modeled for a few dollars. It never hurts to have a general overview of the type of models available in different stores. The list of shops / websites with ready-made 3D models for download can be found in the following list.
And lots of other sites focusing on BIM models...
Where to get materials?
- Substance3D.com
- TwinMotion Archviz materials by Epic games (Unreal engine)
- vMaterials by Nvidia
- vray materials
Where to get textures?
You can similarly google sites to animations ( Mixamo.com/ ), particle effects, sounds and other necessary components for the development of high-end XR applications. The price of most is much lower compared to how much it would cost you to create them.