Aframe+Vue를 사용하여 OculusGo에서 WebVR을 사용하기 시작합니다.

17774 단어 aframeOculusGoVue.js

개시하다


Oculus Rift Advent Calendar 2018 14일째 보도다.
Oculus는 주로 Unity와 UE4에서 개발했는데 그 중에서 브라우저에서 VR을 시도하고 싶어요!이런 변태들도 많아요.
하지만 긴급상황AframeReact360(기존 ReactVR) 페이지를 봤자 "잘 모르겠는데..."라며 포기하는 사람도 많았다.

Aframe이란?


대략적으로 설명하자면 브라우저에서 HMD와 카드보드에 대응하는 3D 렌더링을 간단하게 할 수 있는 프레임워크(내부는three.js VR을 위한 패키지 라이브러리군)이다.공식 웹 사이트 프레젠테이션 브라우저에 3D 모델이 표시됩니다.

오른쪽 아래 모서리의 아이콘을 클릭합니다.

이렇게 VR에 익숙한 화면이 나온다.

실제로 Aframe을 사용하기 전까지는 이해가 안 돼요.


공식 홈페이지설치 항목를 보면 영어에 익숙하지 않으면 무엇을 해야 할지 알기 어렵다.
여기에 있는 프로젝트는 각 개발 스타일의 HowTo를 포함하고 있다면 Aframe을 사용한다는 뜻은 아래 두 번째 항목이다.

Include the JS Build


HTML에서 작성된 파일을 사용하는 방법script 태그를 사용하여 CDN에서 파일을 로드합니다.
<head>
  <script src="https://aframe.io/releases/0.8.0/aframe.min.js"></script>
</head>

Install from npm


패키지 관리 소프트웨어의 npm에서 Aframe을 이용할 수 있도록 합니다.단순히 모듈을 로컬로 가져와서 사용할 뿐 실제 사용 시 노드 모듈을 사용할 때의 예절을 지켜야 한다.(원래 진행npm init, 명령도 npm install aframe --savedependencies에 추가 모듈로 필요하지만 설명이 없음)
프로젝트 추가
  • If you use npm, you can use angle, a command line interface for A-Frame. angle can initialize a scene template with a single command:
  • angle 자체는 간단한 생성기, 템플릿의 패키지입니다.json에 기술된 구성이 낡았기 때문에 (webpack이 2.7에서 멈추거나 바벨의 설정 등이 포함되지 않음) 이걸로 Aframe을 개발하는 것을 추천하지 않습니다.

    Vue CLI 사용


    Vue CLI Vue를 위한 CLI지만 생성기가 우수해 웹팩 도입부터 바벨까지 설정이 가능하기 때문에 어프레임 개발을 활용하면 개발이 수월해진다.
    먼저 Vue CLI 설치는 생략하고 생성기에서 작성할 때 Aframe을 어떻게 포함시켜 진행해야 하는지를 설명합니다.

    생성기를 사용하여 프로젝트 생성


    콘솔에서 다음 명령을 입력합니다.[아무 종목 이름]에서 원하는 이름을 지어주세요.
    vue create 任意のプロジェクト名
    
    CLI 선택 화면이 나타나 커서를 아래로 놓고 Enter 키를 누릅니다.
    Vue CLI v3.1.3
    ┌───────────────────────────┐
    │  Update available: 3.2.1  │
    └───────────────────────────┘
    ? Please pick a preset: (Use arrow keys)
       default (babel, eslint) 
    ❯  Manually select features 
    
    어쨌든 BabelLinter / Formatter에서 체크만 하면 OK.Enter 키를 누릅니다.
    ? Check the features needed for your project: 
    ❯◉ Babel
     ◯ TypeScript
     ◯ Progressive Web App (PWA) Support
     ◯ Router
     ◯ Vuex
     ◯ CSS Pre-processors
     ◉ Linter / Formatter
     ◯ Unit Testing
     ◯ E2E Testing
    
    커서를 ESLint + Standard config에 놓고 Enter 키를 누릅니다.
    ? Pick a linter / formatter config: 
      ESLint with error prevention only 
      ESLint + Airbnb config 
    ❯ ESLint + Standard config 
      ESLint + Prettier 
    
    Lint on save 중 체크가 있으면 됩니다.Enter 키를 누릅니다.
    ? Pick additional lint features: (Press <space> to select, <a> to toggle all,
     <i> to invert selection)
    ❯◉ Lint on save
     ◯ Lint and fix on commit
    
    아무거나 가능하지만 개인적으로In dedicated config files 관리가 더 편합니다.Enter 키를 누릅니다.
    ? Where do you prefer placing config for Babel, PostCSS, ESLint, etc.? (Use a
    rrow keys)
    ❯ In dedicated config files 
      In package.json 
    
    지금까지의 미리 설정을 저장하고 다른 항목에서 사용하시겠습니까?라는 내용을 담았다.N 를 입력하고 Enter 키를 누릅니다.
    ? Save this as a preset for future projects? (y/N) 
    
    설치가 완료될 때까지 기다립니다.작업이 끝나면 편집기에서 프로젝트가 포함된 폴더를 엽니다.아래의 예는 vscode를 이용했다.
    code 任意のプロジェクト名
    

    Aframe 추가

    package.json 항목의 루트 디렉터리로 이동하려면 아래 명령을 사용하십시오.패키지 관리 소프트웨어yarn를 권장합니다.
    yarn add aframe
    

    HelloWorld 코드 쓰기


    임의eslintrc.고쳐 쓰다


    Liter를 수정합니다.개인적인 취향의 문제지만 저는 평소에 이런 설정을 사용합니다.개별 설정의 뜻은 볼 수 있다ESLit 규칙
    module.exports = {
      root: true,
      env: {
        node: true,
      },
      'extends': [
        'plugin:vue/essential',
        '@vue/standard',
      ],
      rules: {
        'no-extra-semi': 'warn',
        'no-undef': 'warn',
        'quotes': ['error', 'single'],
        'space-before-function-paren': ['error', 'never'],
        'arrow-parens': 0,
        'generator-star-spacing': 'off',
        'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
        'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
      },
      parserOptions: {
        parser: 'babel-eslint',
      }
    

    main.고쳐 쓰다


    신청지main.덮어쓰다파일은 src 폴더에 있습니다.
    추가import 'aframe'.
    import Vue from 'vue'
    import App from './App.vue'
    
    import 'aframe'
    
    Vue.config.productionTip = false
    
    new Vue({
      store,
      render: h => h(App)
    }).$mount('#app')
    

    App.고쳐 쓰다


    App.vue는 루트 Vue 인스턴스이며 여기에 서브어셈블리를 추가합니다.마찬가지로 src 폴더 안에 있습니다.
    .vue 파일은 템플릿과 스크립트로 나뉘어져 있으며,template (}) 의 기술과 js 스크립트를 함께 쓸 수 있습니다.
    다음과 같이 덮어씁니다.
    
    <template>
      <div id="app">
        <aframe-window></aframe-window>
      </div>
    </template>
    
    <script>
    import AframeWindow from './components/AframeWindow'
    
    export default {
      name: 'app',
      components: {
        AframeWindow
      }
    }
    </script>
    

    HelloWorld.vue를 삭제합니다.새 vue


    프로젝트 루트 디렉터리 아래에서 삭제/src/components/HelloWorld.vue하고 같은 디렉터리에 추가AframeWindow.vue하면 다음과 같다.
    
    <template>
      <div id="aframe-window">
        <a-scene background="color: #ECECEC" embedded>
          <a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9"></a-box>
          <a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E"></a-sphere>
          <a-cylinder position="1 0.75 -3" radius="0.5" height="1.5" color="#FFC65D"></a-cylinder>
          <a-plane position="0 0 -4" rotation="-90 0 0" width="4" height="4" color="#7BC8A4"></a-plane>
        </a-scene>
      </div>
    </template>
    
    <style>
    @media only screen and (min-width: 640px) {
      #aframe-window {
        width: 640px;
        height: 320px;
        margin-left: auto;
        margin-right: auto;
      }
    }
    
    @media only screen and (max-width: 640px) {
      #aframe-window {
        width: 320px;
        height: 320px;
        margin-left: auto;
        margin-right: auto;
      }
    }
    </style>
    
    <script>
    export default {
      name: 'AframeWindow'
    }
    </script>
    
    그뿐, Aframe은 개발 준비를 마쳤다.여기서부터 Vue와 Aframe의 세계를 기다리고 있습니다!

    로컬 서버 시작


    상기 파일을 저장한 후 다음 명령을 실행합니다
    yarn run serve
    
    부팅이 완료되면 다음 메시지가 표시됩니다.
    컴퓨터와 Oculus Go가 같은 공유기에 연결되었을 때Network의 주소는 Oculus Go의 브라우저에서 열 수 있다.
    스크립트 파일을 저장할 때마다 자동으로 구축 + 브라우저가 다시 불러오기 때문에 빠른 개발을 할 수 있습니다.
     DONE  Compiled successfully in 1179ms
    
      App running at:
      - Local:   http://localhost:8080/
      - Network: http://192.168.***.***:8080/
    

    Aframe 개발에 Vue를 사용하는 장점은?


    이번엔 시간이 없어서 설명을 못했지만 Aframe에서 Vue를 개발한 이유로는
  • Aframe이 DOM 작업을 인식하지 못하면 객체 간에 공동 작업을 수행할 수 없습니다.그러나 Aframe 자체가 DOM 조작을 잘하지 못한다
  • Vue는 DOM 조작을 의식하지 않아도 DOM 구조를 수정할 수 있기 때문에 더욱 프로그래밍적으로 설명할 수 있다
  • Aframe과 Vue는 모두 구성 요소를 대상으로 하기 때문에 쓴 코드가 어떻게 이동하는지 쉽게 파악할 수 있다
  • Vue CLI는 기본적으로 번거로운 설정을 하기 때문에 초기 설정에 대한 고민이 적다
  • 등등, 서로의 장점을 활용해 활용할 수 있기 때문에 각기 다른 목적의 프레임이지만 공존할 수 있어 강력한 조합을 이뤘다.
    또 Aframe과 Vue의 문서도 풍부해 참고가 어려운 점도 드물다.
    Vue에 대해서는 참조여기.가 이해하기 쉬울 수 있습니다.

    좋은 웹페이지 즐겨찾기