Code Monkey home page Code Monkey logo

whztt07 / icecrystal Goto Github PK

View Code? Open in Web Editor NEW

This project forked from clojur/icecrystal

0.0 0.0 0.0 158.8 MB

一个基于OpenGL高效的数字地球解决方案

Shell 1.48% C++ 61.03% Python 0.04% Perl 0.01% C 25.75% C# 0.19% Assembly 0.49% Ada 0.32% Logos 0.03% Pascal 0.27% Objective-C++ 0.33% SAS 0.01% Makefile 2.23% HTML 3.74% CMake 0.20% GLSL 3.59% Batchfile 0.03% DIGITAL Command Language 0.23% Module Management System 0.01% Metal 0.03%

icecrystal's Introduction

IceCrystal简介

IceCrystal是一个大场景(数字地球)解决方案,它包含了渲染器Soul和基于Soul构建的开放场景渲染库LargescaleScene。

Soul是一个OpenGL渲染库。不要将它与Ogre库弄混了,尽管Soul和Ogre有一些共同的特征,但Soul更小一点。Soul库提供了用于 三维渲染的核心功能:

  • 用于矢量和矩阵运算的数学类
  • 面向对象的OpenGL接口,从磁盘加载网格、纹理或着色器的资源框架。
  • 提供了一个非常小但通用的场景图以描述三维场景,这个场景图基于任务调度框架。

LargescaleScene底层使用Soul,是一个开放场景渲染库。 它被设计用来进行实时渲染大范围的场景,最大可以达到整个星球的规模。 在行星规模情况下不可能在GPU的显存中存储所有的地景数据,而是要在运 行过程中根据视点的位置产生相应的数据。这可以通过从硬盘中加载预先计 算好的数据,或者通过算法生成数据来实现。LargescaleScene的另一个目 标是实时编辑地景,它是通过在运行过程中重新生成地景数据实现的,同时 在视点移动时也重新生成地景数据。

LargescaleScene由内核库和几个扩展插件组成。内核库提供了生成器(producer)框架、地形 (terrain)框架和一个基本的用户接口框架。

  • 生成器框架定义了所有数据生成器的通用接口,例如 CPU 或 GPU 生成器、栅格数 据或矢量数据生成器等。生成器可以使用其它生成器产生的数据来生成数据,然后 进行复杂的组合(例如地形法线生成器可以使用高程生成器产生的高程数据来产生 地形的法线)。生成器框架提供了一个通用的缓存组件来存储产生的数据,它利用 了时间相干性:通过缓存,在一帧中产生的数据能够在以后的帧中重复使用;
  • 地形框架使用了基于当前视点动态分割的地形四叉树。它还提供了个 GLSL 一致变 量类型,以访问 GPU 上缓存的栅格数据,以及(通过使用数据生成器)更新这些 缓存和绘制地形的方法。它还提供了用来将平面地形映射到其它形状,如球形(渲 染星球)的变形处理;
  • 用户接口框架基于事件处理器。它为 LargescaleScene中显示的大范围场景提供了基本的导 航。 LargescaleScene的插件提供了几个基于以上框架实现的生成器:有的生成器用来产生高程数据、 有的用来产生栅格数据(这些数据可以表示任何你想要的数据,例如光照反射数据、地表物 的类型、法线、等高线、环境遮挡等)、有的用来产生矢量数据(通过将矢量数据栅格化为 纹理,可以将矢量数据转化为栅格数据)。

LargescaleScene在以下方面基于Soul库:

  • 生成器框架使用了Soul的任务来产生数据。因此,地景数据可以并行的产生,或 者基于Soul调度框架的预取能力在使用前预先加载数据。这个框架还支持生成器 任务间的依赖关系,因此当一个生成器产生的数据被编辑后,其它直接或间接从这 个数据产生的数据都会自动重新计算;
  • 地形框架使用了Soul用于着色器和网格等的渲染框架,并且在场景图中增加了用 于更新 GPU 缓存和绘制地形的方法;
  • 最后,LargescaleScene扩展了Soul的资源框架,增加了生成器和地形组件类型资源。

IceCrystal构建

特别注意:目前只有WIN32 Debug能编译通过运行,其他编译版本的配置需自行搞定

  1. 进入IceCrystal目录

  2. 新建一个build目录

  3. 进入build目录

  4. cmake ../

或者使用CmakeGUI,注意选择WIN32平台选项

  • 工程构建好之后,首先编译ALL_BUILD工程
  • 然后编译CopyTask
  • 最后编译APP,并把APP设置为工程启动项目,编译并设置完成后可以运行简单的工程
  • 数字地球Demo需联系作者获取一个差不多22GB的数据包方可运行(QQ群:457378561)

效果演示

Earth im1 Terrain2 Terrain3 Terrain4 Terrain5 Terrain6 Terrain7

icecrystal's People

Contributors

clojur avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.