Some thoughts on 3D GIS development

Estimated read time 5 min read

3D GIS is a three-dimensional expression of GIS. From the perspective of a layman in 3D GIS development, the development path of 3D GIS is divided into several levels:

First level

To do 3D development, the most basic Cesium, ThreeJS, and MapBox must be familiar with the interface level. Be familiar with what the interface is used for, and the meaning of the interface parameters, such as enabling lighting and setting the light intensity. Although you don’t know the principle, but You know that after setting the lighting, the system can display the lighting. The greater the intensity of the lighting, the brighter the scene. By setting parameters through these interfaces, the system can immediately give you feedback on the effect, giving you a sense of gain.

The above Taipei oblique photography data is loaded into cesium. It only takes two sentences to complete. Isn’t it simple?

javascriptCopy code let tileset = await Cesium.Cesium3DTileset.fromUrl("http://localhost:8802/3DTILES_SAMPLE/tileset.json");
 viewer.scene.primitives.add(tileset);

Most 3D development stays at this level. This level can meet the needs of most projects. For some problems that you don't understand, you can also find the specific calling interface through search.

Second level

Calling SDKs such as Cesium can meet most needs. For some advanced needs, such as drawing luminous polylines attached to the terrain, using API calls cannot solve the problem. It needs to be studied from two aspects, 1. Cesium source code, 2. Shaders written by others using Cesium. When you actually study it, you will find that you have very little knowledge. You can’t understand matrix transformations. The shader syntax is like a bible and you don’t understand the meaning. What is a fragment shader, what does gl_postion mean… Various difficulties come one after another, and you are very confused. What to do? At the second level, you need to systematically study WebGL theory and conduct a lot of programming experiments. Use WebGL to directly draw triangles, draw models, and add mouse operations. At this time, it’s like you have opened a new world. It turns out that frameworks such as Cesium, ThreeJS, and MapBox are all encapsulated based on WebGL. Once you master WebGL, you will have a Qinglong Yanyue Knife. WebGL code written by others can be transformed, transformed, and integrated. Come to your own code. Other people’s shader effects are very cool, very good, copy it over; the cool code on shadertoy is very good, copy it here… After mastering WebGL, you will find that you can solve most display problems. , many personalized needs can be solved. This is the time when you are most motivated and passionate, because you are very curious about knowledge and want to add all good things to Cesium. When you solve the problem that others cannot solve by just calling Cesium API When results are achieved, your leader will trust you and you will feel a sense of accomplishment.

Third level

After you become familiar with WebGL, you will find that the requirements raised by your boss are becoming more and more imaginary, and the requirements for you are getting higher and higher, because he thinks you can solve any display problem. For example, when a leader sees a certain scene in a game or movie video, he suddenly has an idea and lets you realize an identical scene, such as overlaying terrain on Cesium and covering the vegetation area in the land cover data with grass.

You may feel confused when you first listen to it, and you may say that I will do some preliminary research first. I have done grass rendering and terrain rendering myself. How to plant grass in a designated area? After several days of searching, I found open source code. There is no ready-made code that can be copied. What should I do? What to do? What to do? The test at this time is your ability to integrate GIS visualization and 3D. You need to read the paper on terrain and grass rendering, and then deeply understand the principles and processes of Cesium’s generation and rendering of tiles in Digital Earth. Combine the two, Then continue to carry out effect debugging and optimization. When you give a job to the leader, the leader will give you a thumbs up. Although you are very happy, you will feel that the sense of accomplishment is not very strong, but the frustration will only increase. At this stage, what is tested is your ability to integrate GIS + graphics. People who have reached this stage are already very few.

Fourth level

A true master level rarely participates in front-line development at this time. Writing code is often used as a verification of his own ideas. In many cases, he delegates tasks to his colleagues below and just discusses the technical route and implementation method with him. What we do at this time is generally divided into two aspects. On the one hand, can Mapbox use Vulkan for rendering by combining the latest technology with current products? Can it really double the rendering efficiency compared to WebGL? Can Cesium use DLSS3, etc. On the other hand, architecture design and performance optimization, designing a digital earth from an overall framework, can prepare analysis for current product problems, and guide colleagues to locate performance problems. At this stage, it is the reflection of your architectural design capabilities and experience.

Conclusion

I analyzed several aspects of 3D GIS development from a layman’s perspective. In fact, it is also the technical growth path of a 3D GIS developer. I hope it can bring some inspiration and thinking to everyone.

You May Also Like

More From Author

+ There are no comments

Add yours