- From: Charles Pritchard <chuck@jumis.com>
- Date: Wed, 17 Aug 2011 12:34:07 -0700
- To: "www-dom@w3.org" <www-dom@w3.org>
Continuing on Jacob Rossi's comments about clientZ and 3D input devices such as the Kinect, and my comments on simple pen tablets... http://lists.w3.org/Archives/Public/www-dom/2011JulSep/0125.html I'm still holding out hope that we can smuggle "force" or "pressure" into DOM events, as pen pressure is a simple floating point, and pressure devices have been around for ages. It's a shame that they've never made it into the mainstream events standard. That's an issue I'll continue to work on... Aside form that issue, and more to the point of this thread: HD mice and pens send a good 10x more events than typical mouse interaction. They are high precision. This leads to something else: with many applications, mouse events are the primary entry point -- that is, as the user moves their mouse, the app receives events, and repaints the screen based on those events. If the system is slow, it simply processes less events (or with less fidelity). When working with more high density data, it becomes counter-productive to repaint so frequently. And so the repaints should really be queued for each requestAnimationFrame / setTimeout cycle, instead of being executed on each input event. That of course, takes extra effort for the programmer, and it's something that could be improved in the UA, by the use of buffers. The postMessage structured clone algorithm for ArrayBuffer, and the reserved names of InkML could work very well for introducing a new, HiFi event class. Events would only be sent every ~30ms (raf), and they would be sent in an ArrayBuffer using postMessage semantics. It would work as well for pen/hd mouse events as it would for sending a raw Kinect point cloud for use in WebGL. Transfer of ArrayBuffer ownership was added to the HTML5 spec recently (Transferable types): http://lists.w3.org/Archives/Public/public-html-diffs/2011Jun/0130.html InkML traceFormat is a useful guide for cases. http://www.w3.org/TR/InkML/ Lacking an actual interface to use, it's likely that in introductions or plugins, I may just re-use postMessage, perhaps abusing the origin field to describe the source. This is, in pseudocode, what I envision: postMessage( [ {'Z': [type: 'decimal', units: 'cm']} ], 'event://myInputSource', [ ArrayBuffer(....) ]); It'd buffer-up events, and post a message every ~30ms, no quicker than RAF would run, and allowably, it could run slower. No data is lost, and it'd work as well for mouse events as a large connect point cloud. Further, both could be sent directly to WebGL, which is nice. Well, that's my exploration of HiFi events for now. I hope to see some discussion on this, as it'd be wonderful to have a means to incorporate these new data streaming types. -Charles
Received on Wednesday, 17 August 2011 19:34:31 UTC