AWS Sumerian에서 AR 앱 만들기

9609 단어 iOSSumerianARKit아 R

AWS Sumerian이란?



한 줄에
  • 브라우저상에서 Unity 같은 것이 움직이는 서비스.


  • 상금 총액 $10,000의 콘테스트로 작품을 모집중이라는 것



    상금을 목표로 AR 앱을 만들기위한 기술 검증을 시도한 기사입니다.

    참고 링크


  • AWS Sumerian AR 자습서
    htps : // / cs. 미안해. 아마조나 ws. 코 m / 쓰리 아 ls / c 레테 / 어서 r 메아 아테 / 아우 g 멘 테 d 어 아 ty- 우신 g 스메리 안 - 아 r t /
  • Sumerian API reference
    htps : // 콘텐트 t. 미안해. 아마조나 ws. 코 m / 엔기네 / ㄱ st / 두 cs /

  • 개념



    대체로 이런 책임 분할
  • Sumerian의 일
  • 3D 콘텐츠/물리 엔진/게임 등의 스크립트

  • ios의 일
  • 카메라에서 현실 공간에서 평면 등을 검출하여 ARANchor 생성하여 현실과 대응하는 좌표를 만든다
  • ARAnchor의 자식 요소로 Sumerian의 3D 객체를 결합합니다


  • 특징



    콘텐츠 업데이트 가능성


  • 웹 측에서 업데이트하여 표시 할 콘텐츠 및 게임의 논리를 업데이트 할 수 있습니다.

    OS 특정 감지 기능 사용 가능


  • 현실 공간에서 특징 검지하고 ARANchor를 만들 때까지 계속 OS 측에서 할 수 있으므로 ios 고유의 검지 기능을 포함한 AR 앱의 개발이 가능

  • 이미지 감지 구현



    ImageTracking 내장 [ios]



    샘플 코드는 ARWorldTrackingConfiguration으로 되어 있지만 iOS12에서 추가된 고속 화상 검지를 사용하고 싶은 경우는 ARImageTrackingConfiguration으로 바꾸는 것도 가능. 이쪽은 복수의 화상의 동시 검출도 가능.
  • 참고
    htps : // 이 m / k 보 y / ms / d935b76 훗 d67 에 11b9fb2 # 속눈썹 t 등 c 킨 g
  • ARWorldTrackingConfiguration

  • ViewController.swift
        let configuration = ARWorldTrackingConfiguration()
        configuration.detectionImages = referenceImages
        configuration.planeDetection = .horizontal
        configuration.isLightEstimationEnabled = true
        return configuration
    
  • ARImageTrackingConfiguration

  • ViewController.swift
        let configuration = ARImageTrackingConfiguration()
        configuration.trackingImages = referenceImages
        configuration.isLightEstimationEnabled = true
        return configuration
    

    감지용 이미지 설정 [XCode로 작업]



    Assets에 이미지를 넣어




  • 초기치로 Size가 0이 되어 있으므로 현실의 크기에 맞추어 설정한다. 1이 1미터이므로 주의.

  • Assets 이름에서 referenceImages 생성



    ViewController.swift
            guard let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "AR Resources", bundle: nil) else {
                fatalError("Missing expected asset catalog resources.")
            }
    

    테스트



    이상으로 AR로 움직이게 될 것이므로 테스트합니다.

    감지할 수 있었다






    마무리



    화면에서 탭한 포인트에서 Anchor 만들기



    튜토리얼의 샘플 코드가 잘못되어 다음 수정이 필요합니다.

    화면에서 탭한 곳과 검사하는 좌표가 상하 좌우 반대로 되어 있다
  • 잘못된
  •  // Touch handler. Performs a hit test at the currrent screen location.
      ctx.performHitTest = function(evt) {
        var pixelRatio = ctx.world.sumerianRunner.renderer.devicePixelRatio;
        var normalizedX = 1 - (evt.pageX * pixelRatio / ctx.viewportWidth);
        var normalizedY = 1 - (evt.pageY * pixelRatio / ctx.viewportHeight);
    
       arSystem.hitTest(normalizedX, normalizedY, ctx.hitTestCallback);
      };
    
  • 긍정적
  •  // Touch handler. Performs a hit test at the currrent screen location.
      ctx.performHitTest = function(evt) {
        var pixelRatio = ctx.world.sumerianRunner.renderer.devicePixelRatio;
        var normalizedX = evt.pageX * pixelRatio / ctx.viewportWidth;
        var normalizedY = evt.pageY * pixelRatio / ctx.viewportHeight;
    
       arSystem.hitTest(normalizedX, normalizedY, ctx.hitTestCallback);
      };
    

    디버그 모드라면 Anchor에 Cube가 표시되므로 지우기



    플래그를 false로 변경하면 됩니다.

    ViewController.swift
    createDebugNodes = false
    

    결과 AR의 콘텐츠가 모두 표시되지 않는 버그를 발견했기 때문에

    수정할 PR 생성(병합된 것 같습니다)
    htps : // 기주 b. 코 m / 아 ws-sa mp ぇ s / 아마 존 - 스메리 앙 - 아 r ts r r r p / 푸 l / 8

    요약



    이상으로 최저한 AR의 컨텐츠를 접하기 위한 기술을 검증할 수 있었습니다.
    이후에는 콘테스트를 향해 콘텐츠를 확충해 나갈 뿐입니다.
    콘테스트의 마감은 2019/01/08이므로 거기까지 노력해 가고 싶습니다.

    좋은 웹페이지 즐겨찾기