Форум 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 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, время: 20:59.

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