web-dev-qa-db-fra.com

Comment puis-je ajouter un objet 3D en tant que marqueur sur Google Maps, comme le fait Uber?

Je souhaite ajouter un marqueur 3D pour afficher les voitures sur la carte avec une rotation comme Uber, mais je ne trouve aucune information sur l'ajout d'objets 3D dans le SDK Google Maps pour iOS. 

J'apprécierais toute aide.

Apparemment, personne ne voit ce que OP et moi voyons. Voici donc une vidéo d’une voiture Uber tournant à 90 degrés. Jouez-le image par image et vous remarquerez qu'il ne s'agit pas d'une simple rotation d'image. Soit Uber a eu la peine de faire ~ 360 angles de chaque véhicule, ou bien c'est un modèle 3D. Faire 360 ​​images de chaque voiture me semble stupide.

25
Tolgahan Arıkan

D'après ce que je peux dire, ils n'utilisent pas d'objets 3D. Ils n'animent pas non plus entre 400 images d'une voiture sous un angle différent. Ils combinent des images en rotation et animent entre 50 et 70 images d’une voiture sous différents angles. L'illusion est parfaite, car on dirait qu'ils ont utilisé des modèles de voiture 3D!

Regardez ce GIF d’une voiture Uber qui tourne au virage ( Dropbox link ):  GIF showing a Uber car turning a corner

Nous pouvons clairement voir que l'ombre et l'angle de vision de la voiture ne sont pas mis à jour aussi souvent que la rotation de la voiture.

Ici, j'ai superposé 2 images de la voiture sous différents angles, mais en utilisant la même image de voiture:  Uber car images at 2 different angles

Nous pouvons voir que la carte pivote à environ 5 degrés mais l’image de la voiture est parfaitement nette car elle n’a pas changé, elle a simplement pivoté.

25
Felix Lapalme

Tout d’abord, il s’agit de ET NON DE objets 3D si c’est à cela que vous faites référence (il est possible d’en créer un, mais vous perdez du temps). C'est aussi optimisé rétine, c'est pourquoi il semble très clair). 

La raison pour laquelle vous voyez que la voiture est tournée est parce que la UIImageView dans laquelle l'image est conservée est pivotée (en utilisant généralement CABasicAnimation) à l'aide de la base de calcul en dehors de la position du périphérique 3D (utilisation identique de la technologie vous pouvez utiliser Core Location pour récupérer ces données.

C'est un processus, mais très faisable. Bonne chance!

6
Farhad

Uber just a publié un article sur ce blog .

Il semble que les véhicules aient été modélisés à l'aide d'un logiciel 3D, puis que des ressources d'image représentant différents angles aient été exportées pour l'application. En fonction de l'emplacement du véhicule sur la carte et de son en-tête, un actif différent est utilisé.

enter image description here

4
samvermette

Si vous voulez faire pivoter votre image en tant que marqueur. Vous voulez montrer un objet en mouvement, vous pouvez utiliser une image .git. Ce serait une aide complète pour vous. 

Swift 3 

let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127)

//Rotate a marker
let degrees = 90.0
let london = GMSMarker(position: position)
london.title = "London"

//Customize the marker image
london.icon = UIImage(named: "YourGifImageName")
london.groundAnchor = CGPoint(x: 0.5, y: 0.5)
london.rotation = degrees
london.map = mapView

Pour plus d'informations S'il vous plaît vérifier ici

0
Rex

Merci Toutes les réponses sont valables.

si vous voulez, vous pouvez voir la vidéo en cours d'exécution, comment ça marche

Vous pouvez générer des dalles Sprite (environ 60)

Comment je l'implémente et les outils dont vous avez besoin

  • Modèle de voiture source 3D.

  • blender, animer la caméra en utilisant elipse animation de chemin.

  • la caméra tourne autour de la voiture de haut en bas

  • rendre un marqueur 3D en utilisant Sprite généré avec blender, pour les angles, utilisez la modification de relèvement lors de la mise à jour des localisations.

Votre véhicule doit être rendu pour prendre en charge la plupart des écrans. La taille de base de chaque mosaïque était donc de 64 px.

Implémentation du résultat :

https://Twitter.com/ronfravi/status/1133226618024022016?s=09enter image description here

0
Ronald Cardenas