Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   [Stage3D] Барабан карта (http://www.flasher.ru/forum/showthread.php?t=213577)

AlexCooper 09.11.2016 15:12

Барабан карта
 
Здравствуйте. Давно хотел себе реализовать сферическую карту. Кто подобное реализовывал, или видел где-то пример. Заранее бланодарен за любые советы

illuzor 09.11.2016 15:20

Скорей всего, это 3D. Просто вращение трёхмерного объекта.

Zebestov 09.11.2016 15:31

Это 3D.

Bletraut 09.11.2016 17:52

Обычная 3д модель. Думаю смоделить такое не верх сложности.

caseyryan 09.11.2016 19:10

Вероятнее всего это юнити, 3д плюс специальный шейдер со смещением. У меня есть такой) Создает изогнутый мир на подобие игры subway surfers. При этом реального вращения там нет, карта на самом деле прямая. Иллюзия вращения происходит именно благодаря шейдеру

AlexCooper 09.11.2016 20:42

Шейдер) Ухты, это вдвое интересно, поделись. На AS3 такое пилить, не вариант? Хоть и работал с юнити, но чёт флешик мне роднее

undefined 09.11.2016 20:54

мне кажется или там еще и параллакс есть кроме натягивания на цилиндр?

Bletraut 10.11.2016 18:50

Цитата:

Сообщение от AlexCooper (Сообщение 1197225)
Шейдер) Ухты, это вдвое интересно, поделись. На AS3 такое пилить, не вариант? Хоть и работал с юнити, но чёт флешик мне роднее

Думаю, в ас3 такое тоже довольно легко реализовать, может быть даже есть готовые алгоритмы на hlsl и glsl, либо самому придумать.

AlexCooper 11.11.2016 13:11

На счёт шейдера не уверен, тут явно видно что это не измененная проекция, так как на всем экране меняется угол обзора ( примерно с 0 до 90 ). Однозначно 3Д модель, закрутить мир, впринцепи не сложно, я хотел обзор на 360, потому и возник небольшой диссонанс. Но впринцепи в голове уже сложил пазл как се построить

Tails 11.11.2016 14:25

Интересный эффект. На вершинном agal шейдере в as3 можно замутить такую деформацию меша, как и сказал caseyryan.

AlexCooper 11.11.2016 16:17

Сложно представить. Было бы прикольно, хотя бы на пальцах объяснить

Tails 11.11.2016 16:36

Что именно объяснить? Как работать с agal - есть документация. Как написать конкретно такой эффект, ну, как уже сказал, это делается в вершинной программе шейдера. На вскидку, у шейдера будет 2 параметра, центр сферы и её радиус. Дальше в вершинной программе модифицируете координаты, "натягивая" их на сферу.

caseyryan 11.11.2016 16:50

Вложений: 3
Цитата:

Сообщение от AlexCooper (Сообщение 1197251)
На счёт шейдера не уверен, тут явно видно что это не измененная проекция, так как на всем экране меняется угол обзора ( примерно с 0 до 90 ). Однозначно 3Д модель, закрутить мир, впринцепи не сложно, я хотел обзор на 360, потому и возник небольшой диссонанс. Но впринцепи в голове уже сложил пазл как се построить

Нет, это точно шейдер. Модель так закрутить не реально. Придется постоянно убирать какие-то куски, потому что передняя и задняя часть модели очень быстро сомкнутся и сгибать дальше будет некуда. А шейдер работает с прямой моделью любой длины.
На скринах видно, как работает шейдер. Мир в нем можно изгибать гораздо сильнее, и в любом направлении. Так же поставив камеру под нужным углом можно добиться такого результата. По факту все куски идеально прямые, а при запуси игры видно, что дорога становится дугой

p0okm 11.11.2016 22:45

Я извиняюсь, а разве простой анимацией секвенции кадров такой эфект реализовать нельзя, вот как тут http://www.hienergy.com.ua//flash_as3/doro_2.html

illuzor 11.11.2016 23:24

p0okm, эта секвенция будет весить непозволительно много

AlexCooper 12.11.2016 16:42

секвенция не вариант)
caseyryan - поделись шейдером, может получиться его переваять на флеш

undefined 12.11.2016 18:55

glsl - диалект c,а на флэше, на сколько я знаю, шейдеры пишутся прямиком на асме.Так что имхо придется с нуля писать.

Bletraut 12.11.2016 19:05

Вложений: 2
Шейдер из майнкрафта на glsl Parabolic Terrain.

Bletraut 12.11.2016 19:07

Цитата:

Сообщение от undefined (Сообщение 1197270)
glsl - диалект c,а на флэше, на сколько я знаю, шейдеры пишутся прямиком на асме.Так что имхо придется с нуля писать.

Главное алгоритм и формулы узнать, а на AGAL, то уже будет не проблема это переписать.

Добавлено через 3 часа 0 минут
А, именно, из вершинного шейдера нам нужно вот это

Код AS3:

uniform POS3 CHUNK_ORIGIN;
const float curvature_strength = 100.; //lower means more curved terrain
 
POS4 pos = WORLDVIEWPROJ * POSITION;
vec3 relPos = VIEW_POS - (POSITION.xyz + CHUNK_ORIGIN);
gl_Position = pos+ vec4(0.,-1.,0.,0.)*length(relPos.xz)*length(relPos)/curvature_strength;

Добавлено через 3 часа 10 минут
В этой строке просто вычисляется реальное_расстояние_до_вершины = координаты_камеры - (координаты_вершины + координаты_3д_модели_в_которой_расположена_эта_вершина), очевидно, что модель здесь - Chunk.
Код AS3:

VIEW_POS - (POSITION.xyz + CHUNK_ORIGIN);

Думаю, что записать эти простейшие формулы на AGAL труда не составит.

ТС, если всё-таки напишешь данный эффект на агал, то прошу поделиться результатом в данной ветке. :)

AlexCooper 13.11.2016 23:11

Цитата:

Сообщение от Bletraut (Сообщение 1197273)
ТС, если всё-таки напишешь данный эффект на агал, то прошу поделиться результатом в данной ветке. :)

Обязательно =)


Часовой пояс GMT +4, время: 16:24.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.