Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.02.2006, 05:52
_pkiller_ вне форума Посмотреть профиль Отправить личное сообщение для _pkiller_ Посетить домашнюю страницу _pkiller_ Найти все сообщения от _pkiller_
  № 1  
Ответить с цитированием
_pkiller_

Регистрация: Jun 2005
Сообщений: 127
По умолчанию Движение тени

есть сцена - вокруг большого шара двигается другой поменьше и отбрасывает тень. предполагается наличие более чем одного маленького шара, пытаюсь делать прототип, а потом множить его и поворачивать. Все движения задаются программно. Вращение сделано, но при повороте тень никак не хочет правильным образом проецироваца на плоскость. Перепробованы все формулы из школьного курса преобразования координат при повороте, но ни одна из них не дает правильного результата. Вот код движения тени с вариантами.
Код:
onEnterFrame = function () {
	shadow._rotation = -_parent._rotation;
	// shadow._x = _parent.ball._x;
	// shadow._y = _parent.ball._y;
	// shadow._x = _parent.ball._x*Math.cos(this._rotation)-_parent.ball._y*Math.sin(this._rotation);
	// shadow._y = _parent.ball._y*Math.cos(this._rotation)+_parent.ball._x*Math.sin(this._rotation);
	// shadow._x = _parent.shadow2._x+(_parent.ball._x-_parent.shadow2._x)*Math.cos(this._rotation)+(_parent.shadow2._y-_parent.ball._x)*Math.sin(this._rotation);
	// shadow._y = _parent.shadow2._y+(_parent.ball._x-_parent.shadow2._x)*Math.sin(this._rotation)+(_parent.ball._y-_parent.shadow2._y)*Math.cos(this._rotation);
	shadow._x = shadow._x+(_parent.ball._x-shadow._x)*Math.cos(this._rotation)+(shadow._y-_parent.ball._x)*Math.sin(this._rotation);
	shadow._y = shadow._y+(_parent.ball._x-shadow._x)*Math.sin(this._rotation)+(_parent.ball._y-shadow._y)*Math.cos(this._rotation);
	shadow._alpha = 60+_parent.ball._y;
	shadow._yscale = shadow._xscale=50+_parent.ball._y;
};
Укажите на неточность, а то скоро совсем голова сломается.
Вложения
Тип файла: rar 333.rar (5.7 Кб, 46 просмотров)
__________________
За все надо платить

Старый 14.02.2006, 04:17
_pkiller_ вне форума Посмотреть профиль Отправить личное сообщение для _pkiller_ Посетить домашнюю страницу _pkiller_ Найти все сообщения от _pkiller_
  № 2  
Ответить с цитированием
_pkiller_

Регистрация: Jun 2005
Сообщений: 127
РАзве нет знающих людей?
А я так надеялся.

Старый 16.02.2006, 06:14
_pkiller_ вне форума Посмотреть профиль Отправить личное сообщение для _pkiller_ Посетить домашнюю страницу _pkiller_ Найти все сообщения от _pkiller_
  № 3  
Ответить с цитированием
_pkiller_

Регистрация: Jun 2005
Сообщений: 127
Ладно давайте попробуем с другой стороны.
С помощью какого алгоритма можно задать движение тени для объектов, созданных путем поворота на угол одно и того же прототипа. Прототип двигает по эллипсоидной окружности. Тени от всех объектов естессно должны лежать в одной плоскости.
__________________
За все надо платить

Старый 16.02.2006, 11:27
meiciuc вне форума Посмотреть профиль Отправить личное сообщение для meiciuc Найти все сообщения от meiciuc
  № 4  
Ответить с цитированием
meiciuc

Регистрация: Nov 2005
Сообщений: 149
для меня самого физика довольно проблемный предмет, мне не до конца понятна организации сцены у тебя, но из того, что я понял я бы избрал другой подход - намного проще. (если это просто эффект, а не основа какого-нибудь движка) Попробуй по аналогии со следующей ситуацией. _rotation очень удбно привязывать к пройденному пути. например, катится мяч и требуется естественно вращать его поверхность, чтоб создать иллюзию вращения. Оказалось все невероятно просто (я сам не ожидал) - просто делал surface._rotation = mc._x (просто движение было только по х, поэтому он и был единственной точкой привязки. При движении по окружности надо будет просто вычислять пройденный путь). Т.е. нарисовав один раз проекцию тени и поместив точку ее регистрации в точку регистрации самого тела, вращать ее. Вращение же по элипсу можно вообще эмулировать - нарисовал невидимый круг воруг тела, крутанул по вышеописанному принципу, сплющил, прицепил к конторльной точке спроецированную тень. А может тень у тебя вообще не меняет форму? - тогда еще проще получается.

все несколько туманно, но может натолкнет на что полезное

Старый 17.02.2006, 11:57
_pkiller_ вне форума Посмотреть профиль Отправить личное сообщение для _pkiller_ Посетить домашнюю страницу _pkiller_ Найти все сообщения от _pkiller_
  № 5  
Ответить с цитированием
_pkiller_

Регистрация: Jun 2005
Сообщений: 127
сенкс, обмозгую вариант)
__________________
За все надо платить

Старый 01.03.2006, 05:02
_pkiller_ вне форума Посмотреть профиль Отправить личное сообщение для _pkiller_ Посетить домашнюю страницу _pkiller_ Найти все сообщения от _pkiller_
  № 6  
Ответить с цитированием
_pkiller_

Регистрация: Jun 2005
Сообщений: 127
попробывал, получается не очень. По условиям задачи объект движется сначал по прямой, а уже потом по эллипсу. Все написано кодом. Было бы неплохо написать код для тени, чтоб она отслеживала движение объекта и св соответствии с ним изменялась. Но вот программно что-то не очень получается. Неужели нет у нас знающих людей.
__________________
За все надо платить

Старый 01.03.2006, 11:10
meiciuc вне форума Посмотреть профиль Отправить личное сообщение для meiciuc Найти все сообщения от meiciuc
  № 7  
Ответить с цитированием
meiciuc

Регистрация: Nov 2005
Сообщений: 149
источник света далеко от объекта? подвижен ли? Если вариант типа земля-солнце, то можно все сделать с помощью единожды прорисованной тени, просто программно менять ее размеры по горизонтали и вертикали. Немного только повозиться с подбором коэффициентов уравнений, для естесственности. Если что-то вроде проблемы с фонарем, тогда сложнее - без школьной физики не обойтись. Ну это должен быть, вероятно, супер-клип ради которого стоит так выкладываться (без знаний физики).

Старый 02.03.2006, 02:42
_pkiller_ вне форума Посмотреть профиль Отправить личное сообщение для _pkiller_ Посетить домашнюю страницу _pkiller_ Найти все сообщения от _pkiller_
  № 8  
Ответить с цитированием
_pkiller_

Регистрация: Jun 2005
Сообщений: 127
сцена аналог солнечной системы (для ясности), только мелкие объекты движутся в разных плоскостях, аля электроны протоны вокруг атома. Как сделать я понимаю, но тень неправильная получается. В верхнем топе есть уравнения, которые я пытался привязать к тени.
__________________
За все надо платить

Старый 03.03.2006, 03:03
_pkiller_ вне форума Посмотреть профиль Отправить личное сообщение для _pkiller_ Посетить домашнюю страницу _pkiller_ Найти все сообщения от _pkiller_
  № 9  
Ответить с цитированием
_pkiller_

Регистрация: Jun 2005
Сообщений: 127
По умолчанию Для пояснения

На картинке показано, чего я хочу добиться, так же прилоэен исходник с моими попытками. До сих пор ничего не получается. Где же все наши знатоки и профи??
Изображения
Тип файла: jpg shadow.jpg (25.3 Кб, 37 просмотров)
Вложения
Тип файла: rar shadow.rar (10.4 Кб, 16 просмотров)
__________________
За все надо платить

Старый 03.03.2006, 05:49
inspace вне форума Посмотреть профиль Отправить личное сообщение для inspace Найти все сообщения от inspace
  № 10  
Ответить с цитированием
inspace

Регистрация: Oct 2004
Адрес: Москва
Сообщений: 168
Смотри, источник света в твоей модели бесконечно удален поэтому, вращение тени происходит по элипсу. Если ты посмотришь на картинку внимательно, то заметишь, что главная ось элипса тени равна главной оси движения объекта умноженной на косинус угла между плоскостью движения и плоскостью проекции тени. Далее, возникает вопрос о второй оси элипса. каков его размер? Здесь нужно понять, что этот размер зависит от угла под которым наблюдатель смотрит на сцену, поэтому вторую ось нужно просто подобрать так чтобы она лучше смотрелась =) Здесь всё субъективно =)
Вопрос, а для чего Вы делаете эту задачу?

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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