Giter VIP home page Giter VIP logo

gaeaplus's Introduction

Gaea+

Gaea+ is an open source Virtual Globe based on the NASA World Wind. It is provided by Gaea+ team from XLAB, one of the fastest growing ICT companies in its region, with long and extensive experience leading and executing software projects.

The project extends the World Wind Java core with features crucial for advanced real-time rendering of geospatial information, including optimized Render-to-Texture capabilities enabling visualization of large vector datasets, GLSL Shader support built directly into the Worldwind render loop making custom visual effects a breeze, deferred rendering, and a flexible WFS & GML support.

This project has been awarded first place at the NASA World Wind Challenge.

Realtime vector rendering engine

Visualise massive vector data sets at arbitrary level of detail. Gaea+ Render2Texture technology transforms all your lines and polygons into a single memory-friendly tile pyramid on the fly. You will never notice that lines and polygons are rendered as textures. The only thing you will notice is the speed and responsiveness!

Custom shader support

Unleash the power of graphics processors. Make beautiful atmospheric effects, cast photo-realistic shadows, render water surface with supplied shaders or write your own GLSL or Cg shaders and watch the globe transform right in front of you.

Seamless OGC WFS

Access your data as they appear in your data store. Web Feature Service layer provides access to any OGC WFS-compliant vector data set. The layer supports points, lines and polygons, all with custom symbology. Gaea+Render2Texture technology is used for efficient visualisation of lines and polygons.

References

Gaea+ Open Source core is used in mission-critical emergency response systems with massive datasets deployed in several regional emergency call centers. It is also used by spatial planners for data visualization, manipulation and analysis, as well as for recordng stunning photo-realistic presentations of our World.

Getting started

Just type "ant run" and play with the example application! Note that this is just a means to demonstrate the rendering capabilities with a very basic user interface.

Known bugs and other info

  1. Height map files in cache sometimes get corrupted and thus automatically deleted.
  2. WFS polylines are transparent and/or black on some GPU/driver combinations, e.g. Intel GMA 4500MHD.
  3. Shader compilation errors on some GPU/driver combinations.

Gaea+ Open Source is currently based on World Wind version 2.0-daily-685.1405.

Reaching us

Furhter information can be found at the project's home page or at [email protected].

gaeaplus's People

Contributors

gberginc avatar seanexplus avatar vcucek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gaeaplus's Issues

Red layers with Steep Areas layer

The application can get into a state where the overview, controls, and compass layers were all red. The placenames were also red. The entire map view turned completely red when showing just the default World Wind Shading.

This is easily repeatable by turning on "Steep Areas" layer, then selecting "Default World Wind" for the Shading. Once this happened, I had to restart UI to get rid of the red.

Windows 7, Java 7x64, Quadro FX 3700M

Just a small problem about caculating tile index.

I use some data here to test your wfs related implementation, and found this bug.Below is the modified part.

in si\xlab\gaea\core\layers\AbstractNavigationTile.java
line 246

  •   int firstColOfRightTile = Tile.computeColumn(dLon, navSector.getMaxLongitude(), Angle.NEG180);
    
  •   int firstColOfRightTile = Tile.computeRow(dLon, navSector.getMaxLongitude(), Angle.NEG180);
    

I don't know how to paste patch here, or should i use pull request instead?

Issue concerning 3D models

Hi,

I'm experiencing difficulties to make Gaea+ compatible with 3D models.

Either I can apply a Stars layer on WorldWind but my models are "cut" by the edge of the Earth (when I disable pos_effects), or my models are ok but I can't apply any Stars layer anymore (pos_effects activated).

I would like to have pos_effects disabled and my 3D models go over the horizon but I can't manage to do that.

Thanks for your work and your help,

Fabien

atmosphere fog

Is there a way to disable the atmosphere fog in the current version? I'm not sure if fog is the correct term... I'm talking about the bluish filter that is applied, particularly at higher elevations. Thanks!

New problem in kml rendering?

I have tried your new version, the openstreetmap vector layer is really cool. But when i try to enable the building layer, there is a shader initializing problem? Here is the error log:

Shader source:
七月 19, 2013 10:25:07 下午 si.xlab.gaea.core.shaders.BasicGLSLCompiler checkShaderError

SEVERE: Error compiling the shader: ERROR: 142:1: 'assign' : cannot convert from '4-component vector of float' to 'float'

1: #version 150 compatibility
2: #define v110
3: #define v120
4: #define v130
5: #define v140
6: #define v150
7: #define FRAGMENT
8: uniform mat4 eyeToWorld;
9: uniform float useTexture;
10:
11: uniform sampler2D colorSampler;
12: uniform sampler2D bumpSampler;
13: uniform sampler2D envSampler;
14:
15: #ifdef v150
16: #ifdef VERTEX
17: in vec4 in_vertex;
18:
七月 19, 2013 10:25:07 下午 si.xlab.gaea.core.shaders.BasicShaderFactory buildGLSLShader
19: out vec4 v_diffuseF;
20: out vec4 v_diffuseB;
21: out vec4 v_material;
22: out vec2 v_texcoord0;
SEVERE: Incomplete BasicShader: /D:/work/GAEAplusTest/build/classes/si/xlab/gaea/core/shaders/data/DefferedObject.glsl
23: out vec2 v_texcoord1;
24:
25: void main()
26: {
27: gl_Position = gl_ModelViewMatrix * in_vertex;
28:
29: v_texcoord0 = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy;
30: v_texcoord1 = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy;
31:
32: v_diffuseF = gl_FrontMaterial.diffuse;
33: v_diffuseB = gl_BackMaterial.diffuse;
34:
35: //materials
36: vec4 s = gl_FrontMaterial.specular;
37: float si = (s.x + s.y + s.z)/3.0;
38: v_material.x = si;
39: v_material.y = gl_FrontMaterial.shininess;
40: vec4 e = gl_FrontMaterial.emission;
41: v_material.z = (e.x+e.y+e.z)/3.0;
42: }
43: #endif
44:
45: #ifdef GEOMETRY
46:
47: in vec4 v_diffuseF[3];
48: in vec4 v_diffuseB[3];
49: in vec4 v_material[3];
50: in vec2 v_texcoord0[3];
51: in vec2 v_texcoord1[3];
52:
53: out vec4 g_diffuseF;
54: out vec4 g_diffuseB;
55: out vec4 g_material;
56: out vec2 g_texcoord0;
57: out vec2 g_texcoord1;
58: out vec3 g_normal;
59:
60: layout(triangles) in;
61: layout(triangle_strip, max_vertices = 3) out;
62:
63: void main() {
64:
65: mat4 p = gl_ProjectionMatrix;
66: mat4 pInv = inverse(p);
67:
68: vec4 ver1 = gl_in[0].gl_Position;
69: vec4 ver2 = gl_in[1].gl_Position;
70: vec4 ver3 = gl_in[2].gl_Position;
71:
72: vec4 a = ver2 - ver1;
73: vec4 b = ver3 - ver1;
74:
75: vec3 normal = normalize(cross(a.xyz, b.xyz));
76: normal = faceforward(normal, vec3(0.0,0.0,-1.0), normal);
77: g_normal = (eyeToWorld * vec4(normal, 0.0)).xyz;
78:
79: gl_Position = p_ver1;
80: g_diffuseF = v_diffuseF[0];
81: g_diffuseB = v_diffuseB[0];
82: g_material = v_material[0];
83: g_texcoord0 = v_texcoord0[0];
84: g_texcoord1 = v_texcoord1[0];
85: EmitVertex();
86:
87: gl_Position = p_ver2;
88: g_diffuseF = v_diffuseF[1];
89: g_diffuseB = v_diffuseB[1];
90: g_material = v_material[1];
91: g_texcoord0 = v_texcoord0[1];
92: g_texcoord1 = v_texcoord1[1];
93: EmitVertex();
94:
95: gl_Position = p*ver3;
96: g_diffuseF = v_diffuseF[2];
97: g_diffuseB = v_diffuseB[2];
98: g_material = v_material[2];
99: g_texcoord0 = v_texcoord0[2];
100: g_texcoord1 = v_texcoord1[2];
101: EmitVertex();
102:
103: EndPrimitive();
104: }
105: #endif
106:
107: #ifdef FRAGMENT
108:
109: in vec4 g_diffuseF;
110: in vec4 g_diffuseB;
111: in vec4 g_material;
112: in vec2 g_texcoord0;
113: in vec2 g_texcoord1;
114: in vec3 g_normal;
115:
116: out vec4 f_color;
117: out vec4 f_normal;
118: out vec4 f_material;
119:
120: void main()
121: {
122: vec4 color = gl_FrontFacing ? g_diffuseF : g_diffuseB;
123: if(useTexture > 0.5){
124: vec4 f_color_tex = texture2D(colorSampler, g_texcoord0);
125: color = f_color_tex.a * f_color_tex + (1.0-f_color_tex.a) * color;
126: }
127:
128: vec3 normal = g_normal;
129:
130: #ifdef BUMPMAP
131: vec3 bumpNormal = normalize(2.0 * (texture2D(bumpSampler, g_texcoord1) - 0.5)).xyz;
132: vec3 b = normalize(cross(g_normal.xyz, g_texcoord1.xyz));
133: vec3 n = normalize(g_normal.xyz);
134: vec3 t = normalize(g_texcoord1.xyz);
135: mat3 tangentTrans = mat3(t.x, b.x, n.x,
136: t.y, b.y, n.y,
137: t.z, b.z, n.z);
138: normal = transpose(tangentTrans) * bumpNormal;
139: #endif
140:
141: f_color = color;
142: f_normal = vec4((normalize(normal) + 1.0)/2.0, 1.0);
143: f_material[2] = vec4(g_material.xyz, 0.0);
144: }
145: #endif
146:
147: #else
148: varying vec4 v_diffuseF;
149: varying vec4 v_diffuseB;
150:
151: varying vec4 v_material;
152:
153: varying vec3 v_normal;
154: varying vec2 v_texcoord;
155:
156: #ifdef BUMPMAP
157: varying vec4 v_tangent;
158: #endif
159:
160: #ifdef VERTEX
161:
162: void main()
163: {
164: gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
165: v_normal = (eyeToWorld * (gl_ModelViewMatrix * vec4(gl_Normal, 0.0))).xyz;
166: v_texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy;
167:
168: #ifdef BUMPMAP
169: v_tangent = gl_MultiTexCoord1;
170: #endif
171:
172: v_diffuseF = gl_FrontMaterial.diffuse;
173: v_diffuseB = gl_BackMaterial.diffuse;
174:
175: vec4 s = gl_FrontMaterial.specular;
176: float si = (s.x + s.y + s.z)/3.0;
177: v_material.x = si;
178:
179: v_material.y = gl_FrontMaterial.shininess;
180:
181: vec4 e = gl_FrontMaterial.emission;
182: v_material.z = (e.x+e.y+e.z)/3.0;
183: }
184:
185: #else
186: void main()
187: {
188: vec4 f_color = gl_FrontFacing ? v_diffuseF : v_diffuseB;
189: if(useTexture > 0.5){
190: vec4 f_color_tex = texture2D(colorSampler, v_texcoord);
191: f_color = f_color_tex.a * f_color_tex + (1.0-f_color_tex.a) * f_color;
192: }
193:
194: vec3 normal = v_normal;
195:
196: #ifdef BUMPMAP
197: vec3 bumpNormal = normalize(2.0 * (texture2D(bumpSampler, v_texcoord) - 0.5)).xyz;
198: vec3 b = normalize(cross(v_normal.xyz, v_tangent.xyz));
199: vec3 n = normalize(v_normal.xyz);
200: vec3 t = normalize(v_tangent.xyz);
201: mat3 tangentTrans = mat3(t.x, b.x, n.x,
202: t.y, b.y, n.y,
203: t.z, b.z, n.z);
204: normal = transpose(tangentTrans) * bumpNormal;
205: #endif
206:
207: gl_FragData[0] = f_color;
208: gl_FragData[1] = vec4((normalize(normal) + 1.0)/2.0, 1.0);
209: gl_FragData[2] = vec4(v_material.xyz, 0.0);
210: }
211: #endif
212:
213: #endif

Supporting newer WW version. Any advice?

Hi,
I'm currently working on a project based on WWJ 2.1 release.
I wish to add WFS support, and your work looks great!
gaeaplus is based on a pretty old daily build of WWJ, and I want to update it to work with WW 2.1. Do you have any advice on how to approach this matter? I would really appreciate any bit of insight!
Thanks!

A bug in AbstractNavigationTile

In the method AbstractNavigationTile.isSectorVisible the condition
if (!sector.intersects(dc.getVisibleSector()))
return false;

Can cause certain textures to be partly generated (contain
empty rectangular areas at some of their sides).

When the currently generated texture partly intersects the display,
some wfs tiles may intersect the generated RenderTotextureLayer tile
in an area that is not currently displayed (they intersect the textured tile
outside the currently displayed area) and thus will not participate in the
rendering of the generated texture. The generated texture will thus contain
empty areas (I am talking about WFS layers that are generated into the
single RenderToTextureLayer).

Regards
Eldad

Can't see the wfs layer render

I download the latest source, add the wfs layer, but can't see the geometry render in the worldwind.
I have sure that the data have download from the ogc server. Why?

My compute Configuration is lenovo T400, system is Windows 7 x64, Graphics card is ATI HD 3400

Can i ask question about your code here?

I've clone your source code on github and try to run these examples, but i get some error messages. After modified some code , i made the sunlight & slope layer function running successfully, but others glsl related function still had problem......

Bug in OGCCapabilities.java

Line 132 can result in an npe because it is calling nextEvent() before checking if one exists. This should be changed to a while loop

for (XMLEvent event = ctx.nextEvent(); ctx.hasNext(); event = ctx.nextEvent())

Earth totaly black

Hi,

When I start the example application, I could only use the default WorldWind shading, all other render to a black Earth.

image

I got the following message into log:

30 août 2013 00:02:55 si.xlab.gaea.core.shaders.BasicGLSLCompiler printGLLog
GRAVE: OpenGL error number: 1282 description: no error
30 août 2013 00:02:55 si.xlab.gaea.core.shaders.BasicGLSLCompiler loadProgram
INFO: Compiling shader: /D:/Documents/Code/gaeaplus-master/gaeaplus-master/out/production/gaeaplus-master/si/xlab/gaea/core/shaders/data/TerrainLightingAerialPerspective_1.glsl

30 août 2013 00:02:55 si.xlab.gaea.core.shaders.BasicGLSLCompiler checkShaderLinkError
INFO: Shader validation: Validation Error: Samplers of different types point to the same texture unit
Validation Error: Samplers of different types point to the same texture unit

30 août 2013 00:02:55 si.xlab.gaea.core.shaders.BasicShaderFactory buildGLSLShader
GRAVE: Incomplete BasicShader: /D:/Documents/Code/gaeaplus-master/gaeaplus-master/out/production/gaeaplus-master/si/xlab/gaea/core/shaders/data/TerrainLightingAerialPerspective_1.glsl

30 août 2013 00:02:55 si.xlab.gaea.core.shaders.BasicGLSLCompiler checkShaderLinkError
INFO: Shader validation: Validation Error: Samplers of different types point to the same texture unit
Validation Error: Samplers of different types point to the same texture unit

30 août 2013 00:02:55 si.xlab.gaea.core.shaders.BasicShaderFactory buildGLSLShader
GRAVE: Incomplete BasicShader: /D:/Documents/Code/gaeaplus-master/gaeaplus-master/out/production/gaeaplus-master/si/xlab/gaea/core/shaders/data/Atmosphere_1.glsl

Regards

Can't build

[javac] Compiling 214 source files to /Users/bobby/gaeaplus/build/classes
[javac] /Users/bobby/gaeaplus/src/gov/nasa/worldwindx/examples/applet/WWJApplet.java:86: error: cannot find symbol
[javac]                 JSObject win = JSObject.getWindow(this);

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.