3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA -...

36
3DEvent A Framework Using Event-Sourcing Approach For Web-Based Collaborative 3D Design in P2P Caroline DESPRAT Jean-Pierre JESSEL Hervé LUGA {lastname}@irit.fr The 21st Annual International Conference on 3D Web Technology (Web3D 2016) / Anaheim, CA, USA / 07-23-2106

Transcript of 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA -...

Page 1: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

3DEvent A Framework Using Event-Sourcing Approach For Web-Based Collaborative 3D Design in P2P

Caroline DESPRATJean-Pierre JESSELHervé LUGA{lastname}@irit.fr

The 21st Annual International Conference on 3D Web Technology (Web3D 2016) / Anaheim, CA, USA / 07-23-2106

Page 2: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

Context

CAD

Web-based collaboration

Space planning

How to leverage client resources to enhance the collaboration?2

Page 3: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

Related works

3D Modeling Environment Communication architecture

History, traceability, expertise

3

Page 4: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

Related works

3D Modeling Environment

clara.io [Houston et al., 2013]

[Mouton et al., 2014][Grasberger et al., 2013]

Verold StudioBrowser-based techno.

Communication architecture

History, traceability, expertise

3

Page 5: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

Related works

3D Modeling Environment

clara.io [Houston et al., 2013]

[Mouton et al., 2014][Grasberger et al., 2013]

Verold StudioBrowser-based techno.

Communication architecture

Mayght [Zhang et al., 2013]

RADE [Koskela et al., 2015]

Scalability

[Desprat et al., 2015]

History, traceability, expertise

3

Robustness

WebRTC [Bergkvist et al.,2012]

Page 6: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

Related works

3D Modeling Environment

clara.io [Houston et al., 2013]

[Mouton et al., 2014][Grasberger et al., 2013]

Verold Studio

Autonomous messages

Browser-based techno.

Communication architecture

Mayght [Zhang et al., 2013]

RADE [Koskela et al., 2015]

Scalability

[Desprat et al., 2015]

History, traceability, expertise

Event-sourcing [Fowler, 2005]

Conflict detection [Bang et al., 2014]

3

Robustness

Publish/subscribe

WebRTC [Bergkvist et al.,2012]

Page 7: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

Related works

3D Modeling Environment

Autonomous messages

Browser-based techno.

Communication architecture

Scalability

History, traceability, expertise

3DEvent

3

Robustness

Publish/subscribe

Page 8: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

Browser based technologies Flexible visualization

High level editing Expertise embedded History awareness

Asynchronous messages Dynamic and static content distribution

4

Page 9: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

Browser based technologies Flexible visualization

High level editing Expertise embedded History awareness

Asynchronous messages Dynamic and static content distribution

Event sourcing

4

Page 10: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

Browser based technologies Flexible visualization

High level editing Expertise embedded History awareness

Asynchronous messages Dynamic and static content distribution

Event sourcing Client model

4

Page 11: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

Browser based technologies Flexible visualization

High level editing Expertise embedded History awareness

Asynchronous messages Dynamic and static content distribution

Event sourcing Client model

Hybrid architecture4

Page 12: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

• History support is free

• Conflict detection (versioning)

• Semantics for experts

• Arbitrary read-side projection

• Data representation is ideal for networking

Why event-sourcing?

5

event log create scene

add mesh

translate meshA

copy meshA

scale meshB

remove meshA

Hybrid architecture

Event sourcing Client model

Page 13: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

6

Hybrid architecture

Event sourcing Client model

Page 14: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

6

Hybrid architecture

Event sourcing Client model

• Hosts all it needs :

Page 15: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

Web browser client

Domain Event storeScene, Mesh, Geometry Aggregates

User commands

Write

6

Hybrid architecture

Event sourcing Client model

• Hosts all it needs :

• task-based UI,

• expert domain rules,

• short-term storage,

Page 16: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

Web browser client

Web browser client

Domain Event storeScene, Mesh, Geometry

Conflict Detection

Store Synchronization

AggregatesUser commands

Write

Web browser client

6

Hybrid architecture

Event sourcing Client model

• Hosts all it needs :

• task-based UI,

• expert domain rules,

• short-term storage,

• network synchronization,

Page 17: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

Web browser client

Web browser client

Domain Event store

ProjectionView

Scene, Mesh, Geometry

Event busRegisterQueries

Conflict Detection

Store Synchronization

AggregatesEvents

User commands

Event dispatcherRead

Write

Web browser client

6

Hybrid architecture

Event sourcing Client model

• Hosts all it needs :

• task-based UI,

• expert domain rules,

• short-term storage,

• network synchronization,

• local projection.

Page 18: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

Web browser client

Web browser client

Domain Event store

Projection

3D rendering view Three.JS Proj.

View

Scene, Mesh, Geometry

Event busRegisterQueries

Conflict Detection

Store Synchronization

AggregatesEvents

User commands

Event dispatcherRead

Write

Web browser client

6

Hybrid architecture

Event sourcing Client model

• Hosts all it needs :

• task-based UI,

• expert domain rules,

• short-term storage,

• network synchronization,

• local projection.

Page 19: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

Web browser client

Web browser client

Domain Event store

Projection

3D rendering view Three.JS Proj.

View

Scene, Mesh, Geometry

Event busRegisterQueries

Monitoring Proj.Monitoring view

Conflict Detection

Store Synchronization

AggregatesEvents

User commands

Event dispatcherRead

Write

Web browser client

6

Hybrid architecture

Event sourcing Client model

• Hosts all it needs :

• task-based UI,

• expert domain rules,

• short-term storage,

• network synchronization,

• local projection.

Page 20: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

Web browser client

Web browser client

Domain Event store

Projection

3D rendering view Three.JS Proj.

View

Scene, Mesh, Geometry

Event busRegisterQueries

Monitoring Proj.Monitoring view

Conflict Detection

Store Synchronization

AggregatesEvents

User commands

Event dispatcherRead

Write

Web browser client

6

Hybrid architecture

Event sourcing Client model

• Hosts all it needs :

• task-based UI,

• expert domain rules,

• short-term storage,

• network synchronization,

• local projection.

• Publish/subscribe actor

Page 21: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

7

Hybrid architecture

Event sourcing Client model

Page 22: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

User A

Cube translation

vector

cube1

7

Hybrid architecture

Event sourcing

Cube translation

Client model

Page 23: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

Translate command applied on cube1a

a

User A

Cube translation

vector

cube1 cube1

MeshAggregate

7

Hybrid architecture

Event sourcing

Cube translation

Client model

Page 24: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

b

3DEvent framework

Event Store (detailed)e1

Translate command applied on cube1a

Mesh translated event generated (e1)

a b

User A

Cube translation

vector

cube1 cube1

MeshAggregate

7

Hybrid architecture

Event sourcing

Cube translation

Client model

Page 25: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

b

3DEvent framework

conflict resolution

rules

Event Store (detailed)

Concurrency Exception? yes

e1

Translate command applied on cube1a

Mesh translated event generated (e1)

a b

c

Triggered if e1.version equals stored version of the aggregatec

User A

Cube translation

vector

cube1 cube1

MeshAggregate

7

Hybrid architecture

Event sourcing

Cube translation

Client model

Page 26: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

b

3DEvent framework

conflict resolution

rules

Event Store (detailed)

Concurrency Exception? yes

no

PersistencePublication

eee1

e1

Translate command applied on cube1a

Mesh translated event generated (e1)

a b

c

Triggered if e1.version equals stored version of the aggregatec

User A

Cube translation

vector

cube1 cube1

MeshAggregate

7

Hybrid architecture

Event sourcing

Cube translation

Client model

Page 27: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

b

3DEvent framework

conflict resolution

rules

Event Store (detailed)

Concurrency Exception? yes

no

PersistencePublication

eee1

e1

e1 Translate command applied on cube1a

Mesh translated event generated (e1)

a b

c

Triggered if e1.version equals stored version of the aggregatec

e1 handled by projectiond

d

User A

Cube translation

vector

cube1

vector

cube1 cube1

MeshAggregate

7

Hybrid architecture

Event sourcing

Cube translation

Client model

Page 28: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

b

3DEvent framework

conflict resolution

rules

Event Store (detailed)

Concurrency Exception? yes

no

PersistencePublication

(Network)Store synchronization

eee1

e1

e1

e1 Translate command applied on cube1a

Mesh translated event generated (e1)

a b

c

Triggered if e1.version equals stored version of the aggregatec

e1 handled by projectiond

d

User A

Cube translation

vector

cube1

vector

cube1 cube1

MeshAggregate

7

Hybrid architecture

Event sourcing

Cube translation

Client model

Page 29: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

b

3DEvent framework

conflict resolution

rules

Event Store (detailed)

Concurrency Exception? yes

no

PersistencePublication

(Network)Store synchronization

Event Store

eee1

e1

User B

e1

e1 Translate command applied on cube1a

Mesh translated event generated (e1)

a b

c

Triggered if e1.version equals stored version of the aggregatec

e1 handled by projectiond

d

User A

Cube translation

vector

cube1

vector

cube1 cube1

MeshAggregate

7

Hybrid architecture

Event sourcing

Cube translation

Client model

Page 30: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

b

3DEvent framework

conflict resolution

rules

Event Store (detailed)

Concurrency Exception? yes

no

PersistencePublication

(Network)Store synchronization

Event Store

eee1

e1

User B

e1

e1

e1

Translate command applied on cube1a

Mesh translated event generated (e1)

a b

c

d

Triggered if e1.version equals stored version of the aggregatec

e1 handled by projectiond

d

User A

Cube translation

vector

cube1

vector

cube1

vector

cube1 cube1

MeshAggregate

7

Hybrid architecture

Event sourcing

Cube translation

Client model

Page 31: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

b

3DEvent framework

conflict resolution

rules

Event Store (detailed)

Concurrency Exception? yes

no

PersistencePublication

(Network)Store synchronization

Event Store

eee1

e1

User B

e1

e1

e1

Translate command applied on cube1a

Mesh translated event generated (e1)

a b

c

d

Triggered if e1.version equals stored version of the aggregatec

e1 handled by projectiond

d

User A

Cube translation

vector

cube1

vector

cube1

vector

cube1 cube1

MeshAggregate

e1

7

Hybrid architecture

Event sourcing

Cube translation

Client model

Page 32: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

b

3DEvent framework

conflict resolution

rules

Event Store (detailed)

Concurrency Exception? yes

no

PersistencePublication

(Network)Store synchronization

Event Store

eee1

e1

User B

e1

e1

e1

Translate command applied on cube1a

Mesh translated event generated (e1)

a b

c

d

Triggered if e1.version equals stored version of the aggregatec

e1 handled by projectiond

d

User A

Cube translation

vector

cube1

vector

cube1

vector

cube1 cube1

MeshAggregate

Event Store

User C e1

d

vector

cube1

e1

7

Hybrid architecture

Event sourcing

Cube translation

*special case for example: users are connected in line here

Client model

Page 33: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

3DEvent framework

8

Hybrid architecture

Event sourcing Client model

Page 34: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

Discussion

• Current prototype: 3D collaborative object manipulation

• small objects (<10k triangles)

• until 6 collaborators

Benefits Limitations

Robustness, scalability Can be costly on large scale models

History browsing No snapshot

Business logic inputs Conflict management can be enriched with more expert rules

9

Page 35: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

Conclusion

• 3DEvent Framework:

• Lightweight 3D CVE

• Cross platform

• Event paradigm

• Wide application fields (Git-like, serious game scenarios, 3D resumes)

• Future work

• Application on real-use cases

• Metrics determination including collaboration scenarios

• Large scale geometry solutions for transmission and rendering

10

Page 36: 3DEvent - desprat.frdesprat.fr/short/web3d16slides.pdf · Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent Related works 3D Modeling Environment clara.io [Houston et al., 2013] [Mouton

Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent

Conclusion

• 3DEvent Framework:

• Lightweight 3D CVE

• Cross platform

• Event paradigm

• Wide application fields (Git-like, serious game scenarios, 3D resumes)

• Future work

• Application on real-use cases

• Metrics determination including collaboration scenarios

• Large scale geometry solutions for transmission and rendering

Thank you for your [email protected]

10

[email protected]@irit.fr