Skip to content

Latest commit

 

History

History
236 lines (205 loc) · 10.6 KB

TODO.md

File metadata and controls

236 lines (205 loc) · 10.6 KB
  • DONE make multi-markers to support aruco too
    • add arBackend in learner.html input
    • handle arBackend definition in player.html
  • DONE add modelViewMatrix and a smoother in AR.js example ?
    • 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

    • to rename artoolkitMarkerId for now
  • DONE ArToolkitContext.projectionAxisTransformMatrix is only to correct artoolkit axis

    • it is a kludge to start with
    • make it as contained as possible
    • maybe cached in a ARtoolkit specific function
    • projectionAxisTransformMatrix renamed as artoolkitprojectionAxisTransformMatrix
    • simple, no risk and make it clear it is artoolkit -
  • DONE in arbackend-switch put the backend in hash. and offer to switch

    • good for testing
  • DONE all this testing about aruco or jsartoolkit it crappy

    • in artoolkitContext.backend === 'aruco' || 'artoolkit'
    • not very clear + timer to init jsartoolkit
    • 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

  • DONE all the posit stuff MUST be out of aruco context and in controls

  • DONE replace THREEx.ArMarkerControls.notifyFoundModelViewMatrix() by .updateWithModelViewMatrix()

  • 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
  • NOT NOW: threex-aruco layer is really really thin - YET ANOTHER INDIRECTION

    • seems useless indirection for AR.js
    • why not aruco directly
    • you are using jsartoolkit directly
    • YES use aruco directly
    • 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 -
  • 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

TODO

  • if artoolkit arbackend and marker facing camera, then change the tweening

    • specific fix to artoolkit
  • TODO super unclear how to get the backward facing camera...

  • 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
  • release soon and start doing dev/master

    • create a dev branch
    • release AR.js as 1.2
    • what about the communication ?
    • make a post on what is new in AR.js
    • ISSUE: i need to deploy dev on gh-pages it helps with https during dev
  • 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

  • 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

  • DONE do a pass on THREEx.ArToolkitSource

  • DONE update link in README.md

  • 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 :)
  • 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 ?
  • DONE bug in resize + debug in context

    • API is still crap tho
  • 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

  • DONE do a threex.armarkershelper.js something which display info on the marker

    • 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
  • about.me in ar - augmented.club - augmented.whoswho - augmented.cat - augmented.fans - ar.codes

  • release ar.js

    • start working in dev branch
    • more frequent release.
  • 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 ?
  • for refraction, do some deforming mirror effect

    • put dat.gui in it
    • various shape which will act as mirrors
    • cylinder with shrinked middle, dilated middle
    • animated geometry ?
  • see about an example of videoinwebgl + vreffect

  • 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 ?
  • 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
  • "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/

  • DONE fix the multimarker and the symlink - it prevents updating ar.js gh-pages

  • DONE add show/hide into arcode.html url

    • thus the apps workflow is finished
  • DONE do a build file threejs/build/ar.js threejs/build/ar.min.js

  • DONE re-integrate dead reckoning

    • rename motion prediction into deadreckoningcontrols - more precise
  • DONE put THREEx.ArToolkitContext.baseURL = '../' in all demo

  • DONE add fish in pool hole-in-the-wall

  • DONE put liquid marker as a single html

    • or a directory, no need to be dirty
  • DONE liquid-table.html

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
    • just do the call on the webvr-polyfill and see his framedata and all
  • issue with the projection matrix being inverse in y and z
  • LATER: make it work with a-frame

Profile

  • do a threex-artoolkitprofile.js with various performance profile
    • var arToolKitProfile = new THREEx.ARToolKitProfile(type)
    • may be dynamic - for resolution - 'dynamic'
    • type = 'phoneInHand' || 'desktop'
    • 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
    • cookie/localstorage makes it stored on the browser, need one profiler per domain tho
    • but no database and no authentication needed
  • DONE artoolkit-profile.html to store the profile in localstorage
    • it allows you to select which profile you like
    • it has a and store it in the storage - desktop-normal - phone-normal - phone-slow - dynamic in ctor, if there is a local storage use this TODO DONE fix projection camera which inversing y axis, and looking toward positive z 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 Idea about performance - js profiling do it on canary. this is the most advanced tool for that POST: optimising AR.js with chromedevtools 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%