Pietro-G
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    --- title: 'Pre-XI Readme' disqus: hackmd --- Infinite Chemistry === <!-- ![downloads](https://img.shields.io/github/downloads/atom/atom/total.svg) ![build](https://img.shields.io/appveyor/ci/:user/:repo.svg) ![chat](https://img.shields.io/discord/:serverId.svg) --> ## Table of Contents [TOC] ## Interactive Capabilities The current interactive capabilities that a user has is as follows: ### Laser pointer related movement: * Selecting a molecule with a laser pointer and holding down the trigger of that controller moves the game object in synchrony with hand movement. * Selecting a molecule with a laser pointer and either dragging ones finger forward or backward across the left touchpad causes the molecule to zoom either away from or towards a user. ## Grip related movement: * Reaching inside an object with a controller will cause a transparent blue sphere to appear around the object. When this appears the user may press the grip button to move the game object with their hands. * Grip movement is enabled by a small blue sphere called the touchIndicator that appears on the user’s controllers when they hold down the grip button. The user must touch this blue sphere to grip anything that is grip interactive i.e. rotational rings, molecules ## Scaling a molecule smaller or larger: * This is performed by the user pressing both grip buttons while their controllers are inside an object and then moving their hands towards or away from each other to scale the object. ## Rotating a molecule: * Each molecule is encircled by three different rotational rings that will allow the user to rotate the molecule on the three different axes. * During rotation the molecule itself is parented to an empty gameobject called rotationHelper. Then rotationHelper is rotated causing the molecule to rotate. After rotation is finished the molecule is unparented and the transform.rotation of rotationHelper is reset to (0,0,0). * To rotate the user will grip inside one of the rings and then move their controller along the current axis of rotation. A mathematical plane is created from the position of the hand at the start of rotation. The distance from the hand to the plane is what determines how much the object is rotated. * Rotation can be canceled by pressing the opposing grip button. * Snap rotation is when the molecule will only rotate on 45 degree increments. To enable snap rotation hold down the trigger as well as the grip button simultaneously on the controller you are using to rotate. ## Player movement: * Player walk: * Holding forward on the left joystick will move the player in the direction they are currently facing. In this way the user can move in any direction that they might want to. * Player rotation: * Holding down the left grip button while also pressing the left joystick to the left or right will rotate the player to the left or right. * Player teleport: * If the user presses forward on the right joystick a laser pointer will appear. If they point this laser pointer at a game object tagged “ground” a blue indicator will bob up and down. To teleport, the user releases the right joystick and the user will be teleported to where the laser pointer was previously pointing. * The user can cancel teleport movement by pressing the right grip button at any time. Almost all interactive capabilities are aided by visual interaction indicators that help the user intuitively understand what is happening and how to use all of these functionalities. For instructions on how to use all of these interactive functionalities enter into the tutorial scene and try it yourself. ## Structure of an interactive molecule ![](https://i.imgur.com/K0Rudtg.png) The top level of an interactive molecule is the molecule anchor which is an empty game object. The ObjectRotation script is attached to this molecule anchor. The order of the children that are attached to the molecule anchor is very important and should not be changed. This is because the molecule game object is being parented and unparented during rotation. Additionally scripts use this order to find particular game objects in their start methods. For more details concerning rotation see the “rotating a molecule” section of interactive capabilities above. The order of the children of the molecule anchor is as follows: 1. / 3. : The three rotational rings x, y, and z. 4. : rotationHelper: an empty game object that aids in rotation (see “rotating a molecule” above) 5. :indicatorsAndHelpers: an empty game object that has a collection of attached indicators and helpers that are used in interactive capabilities. 6. The molecule game object itself. The interactive script is attached to this game object. Should I keep this following section in our is it irrelevant? Should I just add more to it? ## Further details on interaction schema The Interactive script that is attached to the molecule game object communicates with the PlayerInput script in order to know how the molecule should be behaving at any particular time. The PlayerInput Script monitors the players use of the controllers and keeps track of what molecule the player is interacting with. The PlayerInput script is composed of laser pointer movement, swiping, hand grab movement, and scaling. ## Next steps going forward * A solid foundation has been built that allows users to interact with molecules in 3d space in a way that enhances the players understanding of molecules. Instead of being static and abstract concepts that are confined to paper the user understands molecules as they really are, complex 3d shapes. Our next major goals are as follows: * Developing chemistry lessons and quizzes in VR. Many of the elements within the tutorial such as the instruction screen, helper molecule, and task indicators will build the basis of how lessons will flow. Our first foray into lessons will be flash card type functionality where students will use 3d molecules to complete orbital or stoichiometry questions. * We want to rebuild the chemistry lab table so that the user has a home base for their molecules and lessons. * Currently we have legacy code that can connect to a website called PubChem so that users can upload any preprocessed molecule and view it. However it is in beta stages and will not be found on the current version of the project. * The fundamentals of the interaction system has been created. Currently the aesthetic is functional but part of our next steps is add effects and enhance the interaction indicators so that they are pleasing to look at and are more explanatory of what the user is currently doing. * Ability to build stick and ball models in VR. * Radial menus will be added to the right touchpad. ## Current bugs that we are aware of * Sometimes the controllers are loaded facing the wrong way which paralyzes the user from interacting with the environment at all. You can fix this by restarting steamVR but a solution is being investigated currently. * On the first play in the unity editor swiping an object towards the player will freeze unity for ten seconds or so and then will resolve itself. Code Review === > Player input , > Interactive, > Object rotation, > Then in tutorial scripts > help molecule, > Instructions, > Task indicator Tutorial === {%youtube V6ao4i7K8j0 %} <!-- User story --> <!-- --- --> <!-- User flows --> <!-- --- --> <!-- Project Timeline --> <!-- --- --> ## Appendix and FAQ ###### tags: `InfiniteChemistry` `Pre-XI`

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully