Подтвердить что ты не робот

Как добавить 3d-объект в качестве маркера на Google Maps, например, Uber

Я хочу добавить 3d-маркер для показа автомобилей на карте с поворотом, как это делает Uber, но я не могу найти информацию о добавлении 3D-объектов в SDK Google Maps для iOS.

Поблагодарили бы за любую помощь.

По-видимому, никто не видит, что OP и я видим здесь видео автомобиля Uber, поворачивающегося на 90 градусов. Воспроизведите его по кадре, и вы заметите, что это не простое вращение изображения. Либо Убер столкнулся с проблемой делать ~ 360 углов каждого транспортного средства, или это действительно 3D-модель. Выполнение 360 изображений каждой машины кажется мне глупым.

4b9b3361

Ответ 1

Uber только что выпустил сообщение в блоге, документирующее это.

Похоже, что транспортные средства были смоделированы в программном обеспечении 3D, а затем для приложения были экспортированы ресурсы изображения, изображающие различные углы. В зависимости от того, где транспортное средство находится на карте и его курс, тогда используется другой актив.

enter image description here

Ответ 2

Из того, что я могу сказать, они не используют трехмерные объекты. Они также не анимируют между 400 изображениями автомобиля под другим углом. Они делают смесь вращающихся изображений и анимации между ~ 50-70 изображениями автомобиля под разными углами. Иллюзия прекрасна, потому что действительно похоже, что они использовали 3D-модели автомобилей!

Посмотрите на этот GIF файл автомобиля Uber, поворачивающего за угол (ссылка Dropbox): GIF showing a Uber car turning a corner

Мы ясно видим, что тень и угол обзора автомобиля обновляются не так часто, как поворот автомобиля.

Здесь я наложил 2 изображения автомобиля под разными углами, но используя одно и то же изображение автомобиля: Uber car images at 2 different angles

Мы видим, что карта повернута на 5 градусов, но изображение машины совершенно четкое, потому что оно не изменилось, оно было просто повернуто.

Ответ 3

Во-первых, это НЕ 3D-объекты, если это то, о чем вы говорите (возможно создать одно, но тратить время). Это просто трехмерное изображение, созданное в Photoshop или Illustrator (в основном), которое имеют 3D-перспективу (он также оптимизирован сетчатой ​​сетью, поэтому он выглядит очень ясно).

Причина, по которой вы видите, что автомобиль вращается, потому что UIImageView, в котором изображение удерживается, вращается (используя CABasicAnimation в основном), используя базу вычислений из позиции 3D-устройства (такая же технология используется для запуска приложений для отслеживать местоположение и т.д.), которые вы можете использовать Core Location для получения этих данных.

Это успех, но очень выполнимый. Удачи!

Ответ 4

Спасибо Все ответы действительны.

если вы хотите, вы можете увидеть видео работает, как оно работает

Вы можете создавать листы спрайтов (около 60)

Как я реализую это и инструменты, которые вам нужны

  • 3d модель источника.

  • блендер, анимация камеры с использованием анимации пути elipse.

  • камера вращается вокруг машины сверху вниз

  • рендеринг 3D маркера с использованием спрайта, созданного с помощью Blender, для углов используйте изменение подшипников при обновлении местоположения.

Ваш автомобиль должен отображаться для поддержки большинства экранов, поэтому базовый размер для каждой плитки составлял 64 пикселя, и я масштабировал в соответствии с dpi экранов.

Результат реализации:

[Видео демо] [2]

[2]: https://twitter.com/ronfravi/status/1133226618024022016?s=09 enter image description here

Ответ 5

Если вы хотите повернуть свое изображение в качестве маркера. Хотите показать движущийся объект, вы можете использовать .git изображение. Это поможет вам.

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

Для получения дополнительной информации Пожалуйста, проверьте здесь