TODO.md 18.0 KB
Newer Older
1
## New API - aframe
J
Jerome Etienne 已提交
2

J
Jerome Etienne 已提交
3 4
- do a button - display-hittester-plane
  - in three.js and in aframe.js
J
Jerome Etienne 已提交
5

6
- once this refactor is done, publish is as AR.js v1.5 with a blog post
J
Jerome Etienne 已提交
7

J
Jerome Etienne 已提交
8
- ensure backward compatibility of aframe api
J
Jerome Etienne 已提交
9
  - it seems works ?
J
Jerome Etienne 已提交
10

J
Jerome Etienne 已提交
11

J
Jerome Etienne 已提交
12 13
- remove the area from the trackingMethod
- better handling of the area stuff in trackingMethod
J
Jerome Etienne 已提交
14
- REFACTOR trackingMethod - should i put changeMatrixMode into trackingMethod ?
J
Jerome Etienne 已提交
15
  - should just drop it ? ??? why insit. it seems trouble
J
Jerome Etienne 已提交
16 17
  - it is needed for all the test and all
  - what is trackingMethod ? it is unclear and messy
J
Jerome Etienne 已提交
18 19 20 21
  - trackingMethod = trackingBackend + defaultAnchorDefinition
  - why single string ? when it is actually 2 things
  - {trackingBackend}/{defaultAnchorType}-{changeMatrixMode}-{smoothed}
  - smoothed controls need to be a parameter
J
Jerome Etienne 已提交
22 23 24 25
  - it need to be sorted out
  - currently it is only in arProfile... could it be like a profile-string - a preset
  - not something real... it seems too magic/hackish
  - markers-area and changeMatrixMode are about arAnchor
J
Jerome Etienne 已提交
26
    - (artoolkit|aruco|tango)-(area|hiro|kanji)(modelViewMatrix|cameraTransformMatrix)(-Smoothed)+
J
Jerome Etienne 已提交
27 28 29 30 31
    - hiro-cameraTransformMatrix
    - area-artoolkit-modelViewMatrix
    - area-aruco-cameraTransformMatrix
    - what is it on tango ? some fictuous barcode ?
  - trackingBackend is about the session
32

J
Jerome Etienne 已提交
33
- DONE multi-marker learner doesnt work on firefox
J
Jerome Etienne 已提交
34
- DONE make trackingBackend switchable in arjs-session.html
J
Jerome Etienne 已提交
35 36
- DONE in aframe, i define .initialised but aframe defined .initialized..!?!?! super error prone
  - rename as in isReady ? better than nothing. good for now
J
Jerome Etienne 已提交
37 38 39 40 41 42 43 44 45
- DONE to fix build file...
  - make one build for external tracking
  - one build for pure ar.js
  - would that work ?
  - it worked beofre... with aframe. why it doesnt work anymore ?
- DONE implement working build
  - apparently some issue if artoolkit is included in the build
  - it worked in aframe before... what is happening
  - what if i change the order of the scripts
J
Jerome Etienne 已提交
46 47 48 49 50 51 52
- DONE maybe a class arjs-session-debugui.js
  - create the UI
  - let user attach it to the dom
- DONE buttons aframe doesnt work 
  - in arjs system, debugUIEnabled = true/false
  - how to create the scene dynamically in aframe
  - handle that with a reload
J
Jerome Etienne 已提交
53
- DONE <a-anchor hit-testing-enabled='true'></a-anchor>
J
Jerome Etienne 已提交
54 55 56 57
- DONE implement picking in aframe
  - first make it works, then find a good API
  - <ar-hittester enabled='true' renderDebug='false'> inside the controlled object
- DONE in arjs.session.js - TODO change that to a usual this.parameters
J
Jerome Etienne 已提交
58
  - do emulation layer with display
J
Jerome Etienne 已提交
59 60
- DONE rename arjsmarker aframe component into arjs-anchor
- DONE rename HitTester into HitTesting
J
Jerome Etienne 已提交
61 62 63
- LATER aruco got perspective issue - likely camera init
- DONE markerhelper fails IF changeMatrixMode===cameraTransformMatrix
- DONE tango video fails
J
Jerome Etienne 已提交
64 65 66
  - some post processing in aframe.js - https://github.com/wizgrav/aframe-effects/blob/master/systems/effects.js
  - it seems to override renderer.render by its own function... not super clean but if it works ok
  - it can be changed later
J
Jerome Etienne 已提交
67
- DONE tango tracking is working ? i think so
J
Jerome Etienne 已提交
68
  - test in both mode
69
  - tracking only tho, clearly no video
J
Jerome Etienne 已提交
70

71

J
Jerome Etienne 已提交
72 73
## New API

J
Jerome Etienne 已提交
74 75 76 77
- honor marker preset
  - hiro + kanji and area
  - old issue with the same markers ?? deep in jsartoolkit
  
J
Jerome Etienne 已提交
78 79 80 81 82 83 84 85 86
- clickability works IIF changeMatrixMode === modelViewMatrix
  - change that
  - not a bug, it is just not implemented
  - arjs-hittester and threex-arclickability are messy
  - clean those 2. no need for 2 class ?
  - which API will remain
  - hittester-plane
  - hittester-tango
  - replace ARClickability with something better and port arjs-hittester on top
J
Jerome Etienne 已提交
87

J
Jerome Etienne 已提交
88
- Check it works on all cases
J
Jerome Etienne 已提交
89
  - no special cases incompatibilities
J
Jerome Etienne 已提交
90 91 92
  - changeMatrixMode
  - tango point cloud fails in cameraTransformMatrix

J
Jerome Etienne 已提交
93 94 95 96 97 98
- later rename file/class
  - move all THREEx for ar.js as ARjs.
  - remove artoolkit in the name when it is multi backend
  - require to check/change all code 
  - can i do a compatibility layer for all the classes
  - thus it is only about changing the files
J
Jerome Etienne 已提交
99 100

- how to handle trackingMethod
J
Jerome Etienne 已提交
101 102 103 104 105 106 107 108
  - area-aruco
  - area-artoolkit
  - aruco
  - artoolkit
  - tango
  - arkit
  - best

J
Jerome Etienne 已提交
109 110 111 112 113 114 115 116 117 118 119
- DONE area-artoolkit fails in cameraTransformMatrix
  - wtf ??? so issue upstream ? how to reproduce in three.js
  - is the error in three.js level, or aframe level
  - apparently setting cameraTransformMatrix or modelViewMatrix in changeMatrixMode doesnt change a thing in area-artoolkit
  - area-artoolkit seems to react as if it was always modelViewMatrix
- DONE remove arSession.onResize2() - thus the API is cleaner
  - do a onResize with a test on argument.length - if not good number call old stuff
- DONE put the UI in the plugin
  - do a special function for it, and call this function from javascript
  - or more like a data in the system
- DONE move three.js/arjs-.js in three.js/src/newApi/
J
Jerome Etienne 已提交
120 121 122 123 124 125 126 127 128
- DONE pick real world with all trackingMethod
  - hit tester with plane
- DONE button tangoonly pointcloudtoggle
- DONE full markers area
  - THREEx.ArMultiMarkerUtils
  - button - reset-markers-area
  - button - toggle-marker-helper
  - button - goto-learner
- DONE tango point cloud visible
J
Jerome Etienne 已提交
129

J
Jerome Etienne 已提交
130 131 132 133 134 135
## New build with multiple tracking
- support all tracking but split the build
- ar.js itself
- ar-tracking-artoolkit.js
- ar-tracking-aruco.js
- ar-tracking-tango.js
J
Jerome Etienne 已提交
136

J
Jerome Etienne 已提交
137 138

--- 
J
Jerome Etienne 已提交
139 140 141 142 143 144 145
- put multi-markers in /src/markers-area
  - /examples/markers-area/ - here all the examples
  - put marker page in this directory too
  - three.js/examples/multi-markers/\*.js in /src/markers-area
- refactor threex-screenasportal as a demo in /examples/markers-area/demo-screen-as-portal
  - this is not a threex

J
Jerome Etienne 已提交
146 147 148 149
- remove the arcode generator + marker generator, now that they are in webxr.io
- move docs/ into its own repository
  - thus no conflict with main repo
  - and it is considered secondery
J
Jerome Etienne 已提交
150 151 152 153 154 155
- have seen stuff about projection matrix in jsartoolkit
  - would need to recompiled
  - would fix the near/far
  - maybe i can understand the camera calibration number
  - a pure-js to read camera calibration file would be good
  - ```ARdouble farPlane = 1000.0;``` in emscripten/ARToolKitJS.cpp
J
Jerome Etienne 已提交
156 157
  - what about replacing it directly in artoolkit.min.js ? it should contain it somewhere
    - ```this.setProjectionFarPlane(1000)```
J
Jerome Etienne 已提交
158 159 160 161 162
  - what if i set farPlane in js before everything
    - check if the value in the projection matrix change
  - this update the project matrix
  - ```arglCameraFrustum(&((arc->paramLT)->param), arc->nearPlane, arc->farPlane, arc->cameraLens);```
  - this should be called in setNearPlane
J
Jerome Etienne 已提交
163
  - TRY TO MODIFY THE JS DIRECTLY ?
J
Jerome Etienne 已提交
164

J
Jerome Etienne 已提交
165 166 167
- do test with a special webrtc emulation layer
  - so i can download video and/or image - better for testing
- handle pwa stuff - useful for phone
J
Jerome Etienne 已提交
168
  - some work done in webar-playground
J
Jerome Etienne 已提交
169 170
  - https://twitter.com/jerome_etienne/status/888008537984708608

J
Jerome Etienne 已提交
171
# aframe-ar.js new
J
Jerome Etienne 已提交
172 173
- there is a resize every 1/60 seconds ??
- test on mobile
J
Jerome Etienne 已提交
174 175 176
- aframe-ar.js new version
  - support smoother 
  - support multi marker - so augmented-website
177
  - fixed resize
J
Jerome Etienne 已提交
178
- resize doesnt support portraiting a landscape ? still true?
J
Jerome Etienne 已提交
179 180
- how to handle the parameters
  - i need to have the profile
J
Jerome Etienne 已提交
181
  - still it should be possible to change parameteres to offer flexibility
J
Jerome Etienne 已提交
182
- support multi trackingBackend
J
Jerome Etienne 已提交
183
  - do a aruco example
J
Jerome Etienne 已提交
184 185

---
J
Jerome Etienne 已提交
186
- port webvr-arbackend
J
Jerome Etienne 已提交
187 188 189
  - one example to read webvr data and display them in html
  - then a full example of 3d webvr tracking
  - in desktop and in tango 
190

J
Jerome Etienne 已提交
191
- rename THREEx.ArToolkitContext.getProjectionMatrix into .getArtoolkitProjectMatrix
J
Jerome Etienne 已提交
192
- make multi-marker without page reload
193

J
Jerome Etienne 已提交
194 195
---
  
J
Jerome Etienne 已提交
196
- DONE make multi-markers to support aruco too
J
Jerome Etienne 已提交
197 198
  - add arBackend in learner.html input
  - handle arBackend definition in player.html
J
Jerome Etienne 已提交
199
- DONE add modelViewMatrix and a smoother in AR.js example ?
200 201 202
  - what would be a good example for aruco feature in ar.js
  - yep add that because this is like the default now
- DONE ArMarkerControls.markerId is artoolkit specific
J
Jerome Etienne 已提交
203
  - to rename artoolkitMarkerId for now
204
- DONE ArToolkitContext.projectionAxisTransformMatrix is only to correct artoolkit axis
J
Jerome Etienne 已提交
205
  - it is a kludge to start with
J
Jerome Etienne 已提交
206
  - make it as contained as possible
J
Jerome Etienne 已提交
207 208 209
  - maybe cached in a ARtoolkit specific function
  - projectionAxisTransformMatrix renamed as artoolkitprojectionAxisTransformMatrix
  - simple, no risk and make it clear it is artoolkit - 
J
Jerome Etienne 已提交
210
- DONE in trackingbackend-switch put the backend in hash. and offer to switch
J
Jerome Etienne 已提交
211 212
  - good for testing
- DONE all this testing about aruco or jsartoolkit it crappy
J
Jerome Etienne 已提交
213
  - in artoolkitContext.backend === 'aruco' || 'artoolkit'
J
Jerome Etienne 已提交
214
  - not very clear + timer to init jsartoolkit
J
Jerome Etienne 已提交
215 216
  - so you keep the pointer to context for each. But you test all about the .backend = 'artoolkit'
- DONE arucocontext has the canvas at the moment - but dont respect the original canvasWidth
J
Jerome Etienne 已提交
217
- DONE all the posit stuff MUST be out of aruco context and in controls
J
Jerome Etienne 已提交
218
- DONE replace THREEx.ArMarkerControls.notifyFoundModelViewMatrix() by .updateWithModelViewMatrix()
J
Jerome Etienne 已提交
219 220 221
- LATER: remove all the artoolkit mention in the front as is now multiple backends
  - you got classname with 'artoolkit' in it
  - even exposed in a-frame parameters
J
Jerome Etienne 已提交
222
- NOT NOW: threex-aruco layer is really really thin - YET ANOTHER INDIRECTION
J
Jerome Etienne 已提交
223 224 225 226
  - seems useless indirection for AR.js
  - why not aruco directly
  - you are using jsartoolkit directly
  - YES use aruco directly
J
Jerome Etienne 已提交
227 228 229 230
  - threex-aruco is at the same level of jsartoolkit
    - keeping them at the same level will help make ar.js more consistent
  - threex-aruco provide standalone testing which is good
  - UNCLEAR at best - 
J
Jerome Etienne 已提交
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251

- can you make it easy to try all your demo with aruco
  - this means supporting aruco in webar-playground
  - so multi markers
  - may even be an option in the json localstorage learned area
  - thus it is easy to switch from one to another
  - the best way to put aruco as first player

- aruco seems the future
  - there is pure js implementation - readable code
  - there is a cpp implementation too
  - much smaller code
  - well documented code + algo
  - simple algo - easy to understand
  - not too big - i can maintain it myself
  - i got MUCH better controls over the code
  - this lead to ability to tune and experiments with the detection
  - the detection is the core of the business. it MUCH be under controls
  - still issue with homography
  - but can be easily fixed, compared to the huge advantage
  
J
Jerome Etienne 已提交
252 253 254

---
# TODO
255 256
- if artoolkit arbackend and marker facing camera, then change the tweening
  - specific fix to artoolkit
257 258
- TODO super unclear how to get the backward facing camera...

J
Jerome Etienne 已提交
259 260 261 262
- currently webvr is able to do location already
  - why wouldnt i code it all in webvr location, without the stereo rendering
  - well it is too early. it is better to make it easier to reuse.
  - webvr tango isnt mature enougth
J
Jerome Etienne 已提交
263

J
Jerome Etienne 已提交
264

J
Jerome Etienne 已提交
265
- release soon and start doing dev/master
J
Jerome Etienne 已提交
266 267 268 269
  - create a dev branch
  - release AR.js as 1.2
  - what about the communication ?
  - make a post on what is new in AR.js
J
Jerome Etienne 已提交
270
  - ISSUE: i need to deploy dev on gh-pages it helps with https during dev
J
Jerome Etienne 已提交
271

J
Jerome Etienne 已提交
272 273 274 275
- redo parameters-tuning.html
  - all parameters exposed as button - stored as json in url
  - to replace the demo.html in a-frame - which is super broken anyway
  - 3 groups of parameters : source, context, controls. make it 3 group on screen too
J
Jerome Etienne 已提交
276

J
Jerome Etienne 已提交
277 278
---

J
Jerome Etienne 已提交
279 280 281 282 283 284
- do the initial tunning of camera resolution to have the same aspect as the screen resolution
  - better precision for my cpu
  - currently it is doing 640x480 by default
  - as it is supposed to be fullscreen, get the screen resolution, instead of the window resolution
    - thus no resize being late issue

J
Jerome Etienne 已提交
285 286
---

J
Jerome Etienne 已提交
287 288 289 290 291
- DONE do a pass on THREEx.ArToolkitSource
  - IOS support - https://github.com/jeromeetienne/AR.js/issues/90
  - support for torch - https://www.oberhofer.co/mediastreamtrack-and-its-capabilities/
  - use the new getUserMedia API with envfacing api - see IOS bugs
- DONE update link in README.md
292 293 294 295 296 297 298
- DONE THREEx.ArToolkitSource.prototype.onResize
  split it in 
  THREEx.ArToolkitSource.prototype.mirrorSizeTo(blabla)
- DONE Race conditions in resize
  - arToolkitSource.onResize([renderer.domElement, arToolkitContext.arController.canvas])
  - fails if arToolkitContext.arController not ready
  - change this code, and port is EVERYWHERE :)
299 300 301 302 303 304 305 306 307
- DONE rename marker generator as marker-training - just because it is what artoolkit said before
  - maybe creator ? 
  - training is the same word as before, and seems to do something smart
- DONE do something to upload marker from image directly instead of .patt
  - this avoid the pain of handling .patt files
  - so get the image encoding it, and then do a dataurl
  - as the data is image
- DONE THREEx.ArSmoothedControls.minVisibleDelay to 0 ?
  - why would it be worst to show the marker, than to hide it ? 
J
Jerome Etienne 已提交
308
- DONE bug in resize + debug in context
J
Jerome Etienne 已提交
309
  - API is still crap tho
J
Jerome Etienne 已提交
310 311 312 313
- DONE do the tweening + disapearance with timeout in threex-armarkersmoother.js
  - this is a controls which read a armarkercontrols and output a new smoothed root
  - make a possible delay in the appearance and disapearance
- DONE put armarkerhelper else where
J
Jerome Etienne 已提交
314
- DONE do a threex.armarkershelper.js something which display info on the marker
J
Jerome Etienne 已提交
315 316 317 318 319
  - which pattern, etc...
  - an axis too
  - like you did in threex.arealearning.js
  - if controls.parameters.helperEnabled: true, then the controls will add the helper automatically

J
Jerome Etienne 已提交
320

J
Jerome Etienne 已提交
321 322 323 324
- about.me in ar - augmented.club - augmented.whoswho - augmented.cat - augmented.fans - ar.codes
  - multiple link
  - twitter, avatar, linkedin, facebook
  - all stored in the url. so all the states is in the network
J
Jerome Etienne 已提交
325 326 327 328 329 330
  - avatar at the center, each link graviting around, with exploding entrance like in https://vimeo.com/6264709
  - minimal: twitter avatar, username, twitter logo
  - twitter logo model - https://sketchfab.com/models/60aedf8d974d481995e196225fb0bd2e
  - logo in voxel ? https://sketchfab.com/models/8da01234347a4193b06f0b2f07113d40
  - sketchfab logo - https://sketchfab.com/models/585ace7e32b44d93bb1cecb456488934
  - gravatar from the email - http://en.gravatar.com/site/implement/hash/
J
Jerome Etienne 已提交
331

J
Jerome Etienne 已提交
332 333 334
- release ar.js
  - start working in dev branch
  - more frequent release.
J
Jerome Etienne 已提交
335

J
Jerome Etienne 已提交
336 337 338 339
- moving three.js/ at the root ?
  - it seems more natural. But there is no emergency
  - webvr and aframe in their own repository now that it is more stable ?

J
Jerome Etienne 已提交
340
- for refraction, do some deforming mirror effect
J
Jerome Etienne 已提交
341
  - put dat.gui in it
J
Jerome Etienne 已提交
342
  - various shape which will act as mirrors
J
Jerome Etienne 已提交
343 344
  - cylinder with shrinked middle, dilated middle
  - animated geometry ?
J
Jerome Etienne 已提交
345

J
Jerome Etienne 已提交
346
- see about an example of videoinwebgl + vreffect
J
Jerome Etienne 已提交
347 348 349
- work on the stereo thing - make the webvr stuff
  - suddently your demo would work on any webvr device
  - does this work if i port video-in-webvr into aframe ? what if we go in webvr mode ?
J
update  
Jerome Etienne 已提交
350

J
Jerome Etienne 已提交
351 352 353 354 355
- what to do with profile
  - should it be the default ?
  - at least on a-frame it should be the default because it is targeted at easy
  - by default, the setting should be the most common one. 
  - aka the one of a phone
J
Jerome Etienne 已提交
356

J
Jerome Etienne 已提交
357 358 359
- "Augmented Reality in WebVR" as WebVR experiments... It has a nice twist that 
  i like :)  http://www.blog.google/products/google-vr/come-play-webvr-experiments/

J
Jerome Etienne 已提交
360
- DONE fix the multimarker and the symlink - it prevents updating ar.js gh-pages
J
Jerome Etienne 已提交
361 362
- DONE add show/hide into arcode.html url
  - thus the apps workflow is finished
J
Jerome Etienne 已提交
363 364 365
- DONE do a build file
  threejs/build/ar.js
  threejs/build/ar.min.js
J
Jerome Etienne 已提交
366

J
Jerome Etienne 已提交
367 368
- DONE re-integrate dead reckoning
  - rename motion prediction into deadreckoningcontrols - more precise
J
Jerome Etienne 已提交
369 370 371
- DONE put THREEx.ArToolkitContext.baseURL = '../' in all demo
- DONE add fish in pool hole-in-the-wall
  - https://blog.int3ractive.com/2012/05/fish-boids-threejs-demo.html
J
Jerome Etienne 已提交
372
- DONE put liquid marker as a single html
J
Jerome Etienne 已提交
373
  - or a directory, no need to be dirty
J
Jerome Etienne 已提交
374
- DONE liquid-table.html
J
Jerome Etienne 已提交
375 376 377 378 379 380
  - video texture + animation of sin 
  - center of finger click is the center of the wave
  - it can be water wave
  - it can be fluild real 
  - integrate physics from real finger
  - it can be like the finger in matrix - https://www.youtube.com/watch?v=b2MSF35IxVE&feature=youtu.be&t=98
J
Jerome Etienne 已提交
381
  - http://mrdoob.com/lab/javascript/webgl/voxels_liquid/index.html
J
Jerome Etienne 已提交
382

J
Jerome Etienne 已提交
383
  
J
Jerome Etienne 已提交
384

J
Jerome Etienne 已提交
385

J
Jerome Etienne 已提交
386 387 388 389 390 391 392
# webvr-polyfill
- GOAL: works well using only the positional tracking, not the stereo display
  - thus it works well with all three.js examples
- handle resize - currently the canvas isnt using the css it should
  - canvas is sent to the webvr with .requestPresent(layer)
- webvr polyfill to present in single screen - like smus/webvr-polyfill
  - look at his tuning and do the same
J
Jerome Etienne 已提交
393
  - just do the call on the webvr-polyfill and see his framedata and all
J
Jerome Etienne 已提交
394 395
- issue with the projection matrix being inverse in y and z
- LATER: make it work with a-frame
J
Jerome Etienne 已提交
396

397
# Profile
J
Jerome Etienne 已提交
398 399
- do a threex-artoolkitprofile.js with various performance profile
  - var arToolKitProfile = new THREEx.ARToolKitProfile(type)
400
  - may be dynamic - for resolution - 'dynamic'
J
Jerome Etienne 已提交
401
  - type = 'phoneInHand' || 'desktop'
402 403
  - thus the user can go a in profiler.html and try various profiles until he find the one he needs
  - then we store that in a cookie, and other applications all use this profile
404
  - cookie/localstorage makes it stored on the browser, need one profiler per domain tho
405
  - but no database and no authentication needed
406 407 408 409 410 411
- DONE artoolkit-profile.html to store the profile in localstorage
  - it allows you to select which profile you like
  - it has a <select> and store it in the storage - desktop-normal - phone-normal - phone-slow - dynamic
  - in ctor, if there is a local storage use this

# TODO
J
Jerome Etienne 已提交
412
- DONE fix projection camera which inversing y axis, and looking toward positive z
413 414 415 416
  - this affect webvr polyfill in three.js demo
- currently the source image ratio is always in 640x480 :(
  - the aspect of the webcam should depends on the screens
  - it will improve the accuracy of the marker detection. trackable from further away
J
Jerome Etienne 已提交
417 418

# Idea about performance - js profiling
J
Jerome Etienne 已提交
419 420
- do it on canary. this is the most advanced tool for that
  - POST: optimising AR.js with chromedevtools
J
Jerome Etienne 已提交
421 422 423 424 425 426 427 428
- more than 70% of the time is used to copy the image in the HEAP
  - .drawImage, .getImageData
  - this.dataHeap.set( data ) is 43% of the total
  - if i can send just a pointer on the data... i gain 43% in one shot
- performance remove copy to heap
  - http://kapadia.github.io/emscripten/2013/09/13/emscripten-pointers-and-pointers.html
  - this explains how to pass a pointer from a typearray to c++ 
  - this would avoid the dataHeap.set() - 43%