42
Intégration des méthodes de rendu dans un SIG et conception de cartes stylisées Bertrand Duménieu [email protected] 29-09-2016

Intégration de méthodes de rendu expressif dans un SIG

Embed Size (px)

Citation preview

Intégration des méthodes de rendu dans un SIGet

conception de cartes stylisées

Bertrand Dumé[email protected]

29-09-2016

2

Augmenter l’expressivité des cartes produites par SIG

Données préparées

Symbolisation

Rendu

varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL

Stylisation

3

varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL

Moteur de rendu cartographique

Shaders → méthode expressive

Formalisme de stylisation

4

Moteur de rendu cartographique

5

Version OpenGL de Geoxygene (Jeremy Turbet, David Vanderhaeghe)

JAVA (LWJGL)

6

OpenSource (LGPLv2)

Version OpenGL de Geoxygene (Jeremy Turbet, David Vanderhaeghe)

JAVA (LWJGL)

7

OpenSource (LGPLv2)

Version OpenGL de Geoxygene (Jeremy Turbet, David Vanderhaeghe)

JAVA (LWJGL) Standards OGC

8

Shaders → méthode expressive

9

Intégration des shaders comme nouveaux outils de dessin(méthode expressive)

10

varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSLvarying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL

Ajout d’une méthode ?

varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL

Intégration des shaders comme nouveaux outils de dessin(méthode expressive)

11

varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL

Intégration des shaders comme nouveaux outils de dessin(méthode expressive)

‘’Cassini’’ ‘’Paint Brush’’ ‘’Ink Brush’’

12

varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL

Intégration des shaders comme nouveaux outils de dessin(méthode expressive)

‘’Cassini’’ ‘’Paint Brush’’ ‘’Ink Brush’’

Descripteur Descripteur Descripteur

13

varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL varying vec4 diffuse,ambientGlobal, ambient;varying vec3 normal,lightDir,halfVector;varying float dist;

void main(){ vec3 n,halfV,viewV,ldir; float NdotL,NdotHV; gl_FragColor = ambientGlobal;}

GLSL

Intégration des shaders comme nouveaux outils de dessin(méthode expressive)

‘’Cassini’’ ‘’Paint Brush’’ ‘’Ink Brush’’

Descripteur Descripteur Descripteur

14

Intégration des shaders comme nouveaux outils de dessin(méthode expressive)

15

Formalisme de stylisation

16

Formalisme Spécifications OGC Styled Layer Descriptor et Symbology Encoding

Générique Interopérable Standard Lisible

17

Générique Interopérable Standard Lisible

Formalisme Spécifications OGC Styled Layer Descriptor et Symbology Encoding

18

Formalisme choisi : Spécifications OGC SLD et SE

Générique Interopérable Standard Lisible

19

Formalisme choisi : Spécifications OGC SLD et SE

Générique Interopérable Standard Lisible

20

Formalisme choisi : Spécifications OGC SLD et SE

Générique Interopérable Standard Lisible

21

Extension des spécifications SLD / SE

SLD/SE <Fill> <Stroke> <...Symbolizer>

22

Extension des spécifications SLD / SE

SLD/SE ++ <ExpressiveFill> <ExpressiveStroke> <BlendingMode>

SLD/SE <Fill> <Stroke> <...Symbolizer>

23

Remplissage de surfaces

SLD/SE ++ <ExpressiveFill> <ExpressiveStroke> <BlendingMode>

24

Stylisation de linéaires

SLD/SE ++ <ExpressiveFill> <ExpressiveStroke> <BlendingMode>

25

Modes de mélange

SLD/SE ++ <ExpressiveFill> <ExpressiveStroke> <BlendingMode>

26

Un exemple

27

28

<ExpressiveFill> + méthodes de remplissage par patches

29

<Fill> standard + <BlendingMode> Multiply

30

<Fill> + <BlendingMode> Multiply

31

<Fill> + <BlendingMode> Overlay

32

Cartes

33

Style ‘’Cassini’’, données GeoHistoricaData [NPAR2016]

34

Style ‘’Cassini’’, données ScanExpress 1 : 100 000

35

Style ‘’Aquarelle’’ [NPAR2016]

36

Style ‘’Estampe’’

37

Style ‘’Estampe’’

38

Démo à la pause...

39

MERCI ![NPAR2016]

Christophe S., Dumenieu B., Turbet J., Hoarau C., Mellado N., Ory J., Loi H., Masse A., Arbelot B., Vergne R., Brédif M., Hurtut T., Thollot J., Vanderhaeghe D. (2016). Map Style Formalization: Rendering Techniques Extension for Cartography, Pierre Bénard; Holger Winnemöller. Expressive 2016 The Joint Symposium on Computational Aesthetics and Sketch-Based Interfaces and Modeling and Non-Photorealistic Animation and Rendering, May 2016, Lisbonne, Portugal. The Eurographics Association, Non-Photorealistic Animation and Rendering.

40

41

42