Skip to content

Story Format, Support Scripts and Examples of using Twine for 3D AR

Notifications You must be signed in to change notification settings

blairmacintyre/oldfashioned

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

oldfashioned

Story Format, Support Scripts and Examples of using Twine for 3D AR

The OldFashioned project is an experiment in using Twine as a authoring tool for 3D Augmented, Mixed and (eventually) Virtual Reality stories.

OldFashioned is an extension of SugarCube, a free (gratis and libre) story format for Twine/Twee, based on TiddlyWiki.

OldFashioned is a superset of SugarCube that adds augmented and virtual reality story capabilities, building on the integration of argonjs.io and aframe.io provided by the argon-aframe library.

Downloads and documentation for SugarCube can be found at SugarCube's website.
Currently, almost all of the changes needed to create OldFashioned are not visible to the story author, so the programming language and metaphors of the SugarCube format are used.

OldFashion restructures the HTML document, moving the 2D story content into an Argon-AFrame <ar-scene>. The scene is a simple, bare-bones scene that can be added to by the story author:

<ar-scene id="argon-aframe">
    <a-entity id="story-entities">
    </a-entity>
    <a-entity id="passage-entities">
    </a-entity>
</ar-scene>

For the current version, we assume any of the macros and story functions need to manipulate the 3D scene will be added to the story Javascript and CSS. We created two <a-entity> nodes under <ar-scene>, one to put 3D content that stays around longer than a passage (the #story-entities) and one for content that should be removed when a passage finishes (the #passage-entities). To implement this removal, you should add a predisplay callback to your story javascript as follows:

predisplay['#argon-passage-cleanup'] = task => {
    $('#passage-entities').empty();
};

The 3D content manipulations can be done with existing SugarCube functionality. For example, to add a some 3D conent to the story, use the <<append>> macro.

<<append "#passage-entities">> 
        <a-sphere position="0 1.25 -1" radius="1.25" color="#EF2D5E" ></a-sphere>
        <a-box id="bluebox" position="-1 0.5 1" rotation="0 45 0" width="1" height="1" depth="1"  color="#4CC3D9" ></a-box>
<</append>>

Similar, you can run small scripts to change the properties of the 3D elements, leveraging jquery if you prefer that to plain content element manipulation.

<<script>>
  // make the blue box yellow
  $('#bluebox').attr("color", "#FFC65D");
<</script>>

Similarly, to set up Vuforia tracking, you assign properties to the <ar-scene> similarly. So, to use a tracking dataset and give it the name stonesandchips, you set the vuforiadataset__stonesandchips to a url to were it is stored,

<<script>>
  // store the key somewhere
  let $keyElem = jQuery(document.createElement());
  $keyElem.id = "vuforiakey";
  $keyElem.append("TEXT FOR YOUR ENCYPTED KEY").insertBefore('#argon-aframe');

  // set up vuforia, using that key and the url to the dataset
  $('#argon-aframe').attr({
        "vuforiakey" : "#vuforiakey",
        "vuforiadataset__stonesandchips" : 
        "src:url(http://foo.com/mydatasets/StonesAndChips.xml);"
  });

About

Story Format, Support Scripts and Examples of using Twine for 3D AR

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published