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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Обсуждение > Flash-арт

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 08.12.2002, 20:40
ксойд3 вне форума Посмотреть профиль Найти все сообщения от ксойд3
  № 1  
ксойд3
 
Аватар для ксойд3

Регистрация: Dec 2002
Адрес: Москва
Сообщений: 35
Отправить сообщение для ксойд3 с помощью ICQ
По умолчанию 3D-моделирование во Flash

Создаёте новый movie с разрешением 550х400 (стандартное). Создаёте второй кадр, в actions которого пишете следующее:

clear();
gotoAndPlay("1");

В actions первого кадра пишете:

// НАСТРОЙКИ
speed=1; // скорость вращения вокруг оси y
osi=1; // прорисовка осей (0-выкл, 1-вкл)
xC = 275; // координата точки начала отсчёта (x)
yC = 100; // координата точки начала отсчёта (y)

// ПРОРИСОВКА ОСЕЙ
if(osi==1) {
noteF = new TextFormat();
noteF.color = 0x000000;
noteF.bullet = false;
noteF.underline = true;
linestyle(0,0x999999);
move3d(0, 0, 0);
line3d(200, 0, 0);
line3d(180, 0, -7);
move3d(200, 0, 0);
line3d(180, 0, 7);
_root.createTextField("x", 1, coord3dx(210,0,0), coord3dy(210,0,0), 100, 100);
x.border = false;
x.text = "ось x";
x.setTextFormat(noteF);
move3d(0, 0, 0);
line3d(0, 200, 0);
line3d(7, 180, 0);
move3d(0, 200, 0);
line3d(0, 180, 7);
_root.createTextField("y", 2, coord3dx(0,210,0), coord3dy(0,210,0), 100, 100);
y.border = false;
y.text = "ось y";
y.setTextFormat(noteF);
move3d(0, 0, 0);
line3d(0, 0, 200);
line3d(-7, 0, 180);
move3d(0, 0, 200);
line3d(7, 0, 180);
_root.createTextField("z", 3, coord3dx(0,0,210), coord3dy(0,0,210), 100, 100);
z.border = false;
z.text = "ось z";
z.setTextFormat(noteF);
}

// ПРОРИСОВКА МОДЕЛИ
linestyle(0);
move3d(115,41,-25);
curve3d(115,55,-25,115,83,-25);
curve3d(83,83,-25,66,118,-25);
curve3d(83,118,-25,100,118,-25);
curve3d(100,135,-25,100,161,-25);
curve3d(69,161,-25,49,161,-25);
curve3d(18,249,-25,-48,242,-25);
curve3d(-48,226,-25,-48,200,-25);
curve3d(-9,203,-25,11,135,-25);
curve3d(41,36,-25,115,41,-25);
move3d(115,41,25);
curve3d(115,55,25,115,83,25);
curve3d(83,83,25,66,118,25);
curve3d(83,118,25,100,118,25);
curve3d(100,135,25,100,161,25);
curve3d(69,161,25,49,161,25);
curve3d(18,249,25,-48,242,25);
curve3d(-48,226,25,-48,200,25);
curve3d(-9,203,25,11,135,25);
curve3d(41,36,25,115,41,25);
move3d(115,41,-25);
line3d(115,41,25);
move3d(115,83,-25);
line3d(115,83,25);
move3d(66,118,-25);
line3d(66,118,25);
move3d(100,118,-25);
line3d(100,118,25);
move3d(100,161,-25);
line3d(100,161,25);
move3d(49,161,-25);
line3d(49,161,25);
move3d(-48,242,-25);
line3d(-48,242,25);
move3d(-48,200,-25);
line3d(-48,200,25);

// ФУНКЦИИ
function move3d(x, y, z) {
moveTo(xC-math.cos(Math.PI/180*(45+gr))*x+math.sin(Math.PI/180*(45+gr))*z, math.sin(Math.PI/180*(45+gr))*x+yC+y+math.cos(Math.PI/180*(45+gr))*z);
}
function line3d(x, y, z) {
lineTo(xC-math.cos(Math.PI/180*(45+gr))*x+math.sin(Math.PI/180*(45+gr))*z, math.sin(Math.PI/180*(45+gr))*x+yC+y+math.cos(Math.PI/180*(45+gr))*z);
}
function coord3dx(x, y, z) {
return xC-math.cos(Math.PI/180*(45+gr))*x+math.sin(Math.PI/180*(45+gr))*z;
}
function coord3dy(x, y, z) {
return math.sin(Math.PI/180*(45+gr))*x+yC+y+math.cos(Math.PI/180*(45+gr))*z;
}
function curve3d(x,y,z,ax,ay,az) {
curveTo(xC-math.cos(Math.PI/180*(45+gr))*x+math.sin(Math.PI/180*(45+gr))*z, math.sin(Math.PI/180*(45+gr))*x+yC+y+math.cos(Math.PI/180*(45+gr))*z,xC-math.cos(Math.PI/180*(45+gr))*ax+math.sin(Math.PI/180*(45+gr))*az, math.sin(Math.PI/180*(45+gr))*ax+yC+ay+math.cos(Math.PI/180*(45+gr))*az);
}
gr+=speed;

// Copyrights
_root.createTextField("copy",1,15,370,330,130);
copy.multiline = true;
copy.wordWrap = true;
copy.border = false;
copyF = new TextFormat();
copyF.color = 0x000000;
copyF.bullet = false;
copyF.underline = false;
copyF.font = "Arial";
copyF.bold = true;
copy.text = "(c) qb.studio 2002";
copy.setTextFormat(copyF);

Вот собственно и всё =).

Описание функций:

move3d(координата по x,координата по y,координата по z) - Аналог команды moveTo, только работает относительно 3d-осей. Использование: move3d(100,50,20);

line3d(координата по x,координата по y,координата по z) - Аналог команды lineTo, только работает относительно 3d-осей. Использование: line3d(100,50,20);

curve3d(координата контрольной точки по x,координата контрольной точки по y,координата контрольной точки по z,координата якоря по x,координата якоря по y,координата якоря по z) - Аналог команды curveTo, только работает относительно 3d-осей. Использование: curve3d(100,50,20,20,100,60);

coord3dx(координата по x,координата по y,координата по z) и coord3dy(координата по x,координата по y,координата по z) - Преображает 3D-координаты в 2D. Использование: _root.createTextField("text", 1, coord3dx(0,210,0), coord3dy(0,210,0), 100, 100);

Отдельная благодарность Борщу за помощь в написании данного скрипта

Старый 08.12.2002, 22:34
[subway]design вне форума Посмотреть профиль Отправить личное сообщение для [subway]design Посетить домашнюю страницу [subway]design Найти все сообщения от [subway]design
  № 2  
[subway]design
 
Аватар для [subway]design

Регистрация: Oct 2001
Адрес: в Петербурге
Сообщений: 2,430
Клево, только с перспективой траблы. И тормозит :)
__________________
subway.net.ru

Старый 08.12.2002, 23:02
Borsch вне форума Посмотреть профиль Отправить личное сообщение для Borsch Посетить домашнюю страницу Borsch Найти все сообщения от Borsch
  № 3  
Borsch
 
Аватар для Borsch

Регистрация: Apr 2002
Адрес: Москва
Сообщений: 235
Отправить сообщение для Borsch с помощью ICQ
По умолчанию reply

над перспективой работаем......все будет....
но вот на счет тормозов не знаю.......на 2 комах тестили....
на 650 AMD и на CELERON 1200.....вроде без тормозов......
спасибо за оценку..............
__________________
,.;'": Borsch :"';.,

Старый 09.12.2002, 00:44
Borsch вне форума Посмотреть профиль Отправить личное сообщение для Borsch Посетить домашнюю страницу Borsch Найти все сообщения от Borsch
  № 4  
Borsch
 
Аватар для Borsch

Регистрация: Apr 2002
Адрес: Москва
Сообщений: 235
Отправить сообщение для Borsch с помощью ICQ
По умолчанию ...

Попробуйте изменить Frame Rate...к примеру поставте 20 или 30....тогда не должно....
__________________
,.;'": Borsch :"';.,

Старый 09.12.2002, 09:34
[subway]design вне форума Посмотреть профиль Отправить личное сообщение для [subway]design Посетить домашнюю страницу [subway]design Найти все сообщения от [subway]design
  № 5  
[subway]design
 
Аватар для [subway]design

Регистрация: Oct 2001
Адрес: в Петербурге
Сообщений: 2,430
fps=120 так же играет, как и fps=20. У меня PIII 450 MHz
__________________
subway.net.ru

Старый 09.12.2002, 09:54
Borsch вне форума Посмотреть профиль Отправить личное сообщение для Borsch Посетить домашнюю страницу Borsch Найти все сообщения от Borsch
  № 6  
Borsch
 
Аватар для Borsch

Регистрация: Apr 2002
Адрес: Москва
Сообщений: 235
Отправить сообщение для Borsch с помощью ICQ
Блин....тогда не знаю.....
__________________
,.;'": Borsch :"';.,

Старый 09.12.2002, 16:54
DeliMIter вне форума Посмотреть профиль Отправить личное сообщение для DeliMIter Найти все сообщения от DeliMIter
  № 7  
DeliMIter
некрофил
 
Аватар для DeliMIter

Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
Это все оттого, что кода СЛИШКОМ много. Для рассчета вершин полноценного трехмерного объекта с перспективой требуется всего одна строка. Правда длинная.
Код:
createEmptyMovieClip("Fan", 0)._x = Stage.width / 2;
Fan._y = Stage.height / 2;

for (var i=0; i<3; i++) {
 (Fan[i] = Fan.createEmptyMovieClip("B" + i, i)).data = [[0, 10, 10, Math.sqrt(200)], [25, -10, -10, Math.sqrt(725)], [100, -5, 0, Math.sqrt(10025)], [100, 5, 0, Math.sqrt(10025)]];
 Fan[i].draw = function(valuea, valueb) {

// the next block is one line (you may not believe, but it is true)
  for (var i=0; i<4; i++) 
   (i == 0? this.datax = new Array(): this.datax)[i] = 
    [this.R * Math.sin(this._a) * (this.Z + 200) / 200, 
     this.data[i][3] * Math.sin(Math.atan2(this.data[i][1], this.data[i][0]) + valueb * Math.PI / 180) * (this.Z + 200) / 200, 
     this.Z = (this.R = Math.sqrt((this.Z = this.data[i][2])*this.Z + (this.X = this.data[i][3] * Math.cos(Math.atan2(this.data[i][1], this.data[i][0]) + valueb * Math.PI / 180))*this.X)) * Math.cos(this._a = Math.atan2(this.X, this.Z) + valuea * Math.PI / 180)];
// end of block

  this.clear();
  this.lineStyle(0, 0x00, 100);
  this.beginFill(0xCCCCCC, 100);
  this.moveTo((this.datax[3][0] + (this.datax[4] = this.datax[0])[0])/2, (this.datax[3][1] + this.datax[0][1])/2);
  for (var i=0; i<4; i++) this.curveTo(this.datax[i][0], this.datax[i][1], (this.datax[i+1][0] + this.datax[i][0])/2, (this.datax[i+1][1] + this.datax[i][1])/2);
  this.endFill();
  this.swapDepths(this.datax[0][2] + this.datax[1][2] + this.datax[2][2] + this.datax[3][2]);
 }
}

Fan.onEnterFrame = function() {
 for (var i=0; i<3; i++) this[i].draw(180 / Math.PI * Math.atan2(this._ymouse * this._ymouse + this._xmouse * this._xmouse, 40000), (i==0? (this._a += 10) - (this._rotation = 180 / Math.PI * Math.atan2(this._parent._ymouse - this._y, this._parent._xmouse - this._x)): this._a - this._rotation) + 120 * i);
}
__________________
...убивать людей не удовольствия ради, но для еды.

Старый 10.12.2002, 18:30
Bunkoff вне форума Посмотреть профиль Отправить личное сообщение для Bunkoff Найти все сообщения от Bunkoff
  № 8  
Bunkoff
 
Аватар для Bunkoff

Регистрация: Jul 2000
Адрес: Москва
Сообщений: 338
По умолчанию Круто

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

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

Регистрация: Nov 2002
Адрес: Спб
Сообщений: 40
2Bunkoff
Вложения
Тип файла: zip 3d-2.zip (1.1 Кб, 145 просмотров)
__________________
Пока мыслю...

Старый 11.12.2002, 10:19
Bunkoff вне форума Посмотреть профиль Отправить личное сообщение для Bunkoff Найти все сообщения от Bunkoff
  № 10  
Bunkoff
 
Аватар для Bunkoff

Регистрация: Jul 2000
Адрес: Москва
Сообщений: 338
2Sasha: чегой то не то с свф-кой, не работает, панимашь. Чистое поле флеш-плеера.
__________________
Анатомию курицы мы знаем лучше, чем свою... факт

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

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

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


 


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


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