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
Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent
Context
CAD
Web-based collaboration
Space planning
How to leverage client resources to enhance the collaboration?2
Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent
Related works
3D Modeling Environment Communication architecture
History, traceability, expertise
3
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
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]
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]
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
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
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
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
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
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
Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent
3DEvent framework
6
Hybrid architecture
Event sourcing Client model
Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent
3DEvent framework
6
Hybrid architecture
Event sourcing Client model
• Hosts all it needs :
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,
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,
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.
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.
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.
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
Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent
3DEvent framework
7
Hybrid architecture
Event sourcing Client model
Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent
3DEvent framework
User A
Cube translation
vector
cube1
7
Hybrid architecture
Event sourcing
Cube translation
Client model
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
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
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
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
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
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
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
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
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
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
Web3D 2016 - DESPRAT, JESSEL, LUGA - 3DEvent
3DEvent framework
8
Hybrid architecture
Event sourcing Client model
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
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
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
Top Related