Средство просмотра моделей для Интернета не отображает кнопку «Просмотр в AR» при передаче частного подписанного URL-адреса или общедоступного URL-адреса из AWS S3

#angular #amazon-s3 #augmented-reality #model-viewer #web-ar

#угловой #amazon-s3 #дополненная реальность #модель-просмотрщик #веб-ар

Вопрос:

Я начал использовать ModelViewer 1.9.2 от Google в своем проекте angular для визуализации 3d-модели. Возможно, обнаружение поверхности для увеличения объектов на данный момент. Первоначально я использовал 3d-модели внутри ресурсов приложения для расширения, что прошло нормально, и я могу дополнять. Теперь я хочу извлечь файл из корзины s3 и передать URL-адрес в средство просмотра моделей. Вот где я застрял. Ни общедоступный URL-адрес, ни Закрытый подписанный URL-адрес не позволяют мне увеличить 3d-объект

это мое component.html

 lt;section class="py-5"gt;  lt;div class="container-fluid"gt;  lt;div class="row"gt;  lt;div class="col-lg-6"gt;  lt;div class=""gt;  lt;model-viewer src={{demo_fileURL}} ios-src="" alt={{demo_name}} poster="assets/images/loading_1.gif"  environment-image="neutral" shadow-intensity="3" shadow-softness="1" camera-controls auto-rotate autoplay ar  ar-modes="webxr scene-viewer quick-look" ar-scale="auto"gt;  lt;/model-viewergt;  lt;/divgt;  lt;/divgt;  lt;/divgt;  lt;/divgt; lt;/sectiongt; 

это мой файл component.ts

 import { Component, OnInit } from '@angular/core'; import { S3FileService } from '../s3-access.service';  @Component({  selector: 'app-animgirl',  templateUrl: './animgirl.component.html',  styleUrls: ['./animgirl.component.css'],  providers: [S3FileService], }) export class AnimgirlComponent implements OnInit {  demo_name: string;  demo_fileURL: string;  demo_fileName: string;   constructor(private s3FileService: S3FileService) {  this.demo_name = 'Animgirl Character';  this.demo_fileName = 'character_assets/glb/animgirl.glb';   var baseURL =  'https://isl-studio.s3.ap-south-1.amazonaws.com/AR_Milestone1/assets/';   // Signed URL from AWS S3 link  // this.demo_fileURL = this.s3FileService.viewAssetFile(this.demo_fileName);    // Public URL from a different bucket  this.demo_fileURL = baseURL   this.demo_fileName;  console.log('Final URL : '   this.demo_fileURL);  }  ngOnInit(): void {} } 

Когда я передаю подписанный URL-адрес в modelViewer, я вызываю встроенную службу s3, которая позволит мне получить доступ к закрытому ведру с использованием учетных данных и вернет мне подписанный URL-адрес, чтобы я мог передать его в средство просмотра моделей

Я включил политику CORS для обоих сегментов s3(публичного и частного). Вот политика CORS, которую я применил

 [  {  "AllowedHeaders": [  "*"  ],  "AllowedMethods": [  "HEAD",  "GET",  "PUT",  "POST",  "DELETE"  ],  "AllowedOrigins": [  "https://*",  "http://*"  ],  "ExposeHeaders": []  } ] 

В обоих случаях я могу видеть средство просмотра модели — предварительный просмотр модели. но кнопка «Просмотр в AR» не включается. У меня нет проблем с доступом к CORS. Устройство, которое я использую, является устройством с поддержкой Android ARCore. Когда я передаю один и тот же файл из ресурсов локального приложения, я вижу кнопку «Просмотр в AR», поэтому я уверен, что с плагином просмотра моделей, подключенным к приложению angular, все в порядке.

Проблема возникает, когда я передаю общедоступный или подписанный URL-адрес в средство просмотра моделей. Предложите мне, если я что-то упускаю в процессе.

Ответ №1:

Проблема может быть связана с доступом к просмотрщику моделей через NPM.

Пожалуйста, используйте CDN — я лично предпочитаю. Добавьте приведенный ниже скрипт в свой index.html Как частный подписанный URL-адрес, так и общедоступный URL-адрес работают, когда я снова переключился на CDN.

 lt;!-- 💁 Include both scripts below to support all browsers! --gt;   lt;!-- Loads lt;model-viewergt; for modern browsers: --gt;  lt;script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"gt;lt;/scriptgt;  lt;!-- Loads lt;model-viewergt; for old browsers like IE11: --gt;  lt;script nomodule src="https://unpkg.com/@google/model-viewer/dist/model-viewer-legacy.js"gt;lt;/scriptgt; 

Ответ №2:

Средство просмотра моделей необходимо инициализировать, поэтому в самом начале вашей логики, прежде чем извлекать файл из БД. передайте ему пустую строку, это должно сработать.

this.src = » или this.demo_fileURL = «.