|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Oct 2011
Сообщений: 14
|
проблема с текстурированием поверхности
Доброго времени суток.
У меня есть задачка, за которую мне интересно было взяться, хотя ничего в это до нынешнего момента не знал, прочитал книги,справки по ActionScript 3.0, нашел этот замечательный форум, где мне умные люди ответили и сильно помогли. Суть задачи в том, чтобы растянуть картинку по сфере изнутри, попробовал с помощью drawTriangles() и текстурированием поверхности, но при запуске у меня ничего не происходит и выводится ошибка: Error: Error #1502: Сценарий выполнялся дольше периода ожидания, установленного по умолчанию на 15 секунд. at _fla::MainTimeline/OnComplete() Может кто-нибудь найдет что-то неладное в моем коде: import flash.display.Loader; import flash.events.Event; import flash.net.URLRequest; import flash.display.BitmapData; var imageLoader: Loader = new Loader(); imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, OnComplete); imageLoader.load(new URLRequest('4.jpg')); function OnComplete(e: Event): void { var focalLength: Number = 200; var bitmapData: BitmapData = Bitmap(imageLoader.content).bitmapData; var verticles: Vector.<Number> = new Vector.<Number>(); var indices: Vector.<int> = new Vector.<int>; var t1, t2, t3, t4: Number = 0; var uvtData: Vector.<Number> = new Vector.<Number>(); this.graphics.clear(); this.graphics.beginBitmapFill(bitmapData); for (var i: int = -300; i < 296; i+=4) { for (var j: int = -300; j < 296; j+=4) { t1 = focalLength/(focalLength - Math.sqrt(360000 - i*i - j*j)); t2 = focalLength/(focalLength - Math.sqrt(360000 - (i + 4)*(i + 4) - j*j)); t3 = focalLength/(focalLength - Math.sqrt(360000 - i*i - (j + 4)*(j + 4))); t4 = focalLength/(focalLength - Math.sqrt(360000 - (i + 4)*(i + 4) - (j + 4)*(j + 4))); verticles.push((i+300)*t1,(j+300)*t1, (i+304)*t2,(j+300)*t2, (i+300)*t3,(j+304)*t3, (i+304)*t4,(j+304)*t4); indices.push(0,2,1, 1,2,3); uvtData.push((i+300)/600,(j+300)/600,t1, (i+304)/600,(j+300)/600,t2, (i+300)/600,(j+304)/600,t3, (i+304)/600,(j+304)/600,t4); this.graphics.drawTriangles(verticles, indices, uvtData); } } } |
|
|||||
Регистрация: Jun 2009
Адрес: Нерезиновая
Сообщений: 23
|
Ответ кроется в самом вопросе - ваш код выполняется дольше 15 секунд. В данном случае неладен сам подход, ибо такие вычисления могут "положить" машину надолго. Если это приемлимо - у компилятора есть параметр -max-execution-time <число> , которое определяет эту цифру (в случае компилирования в mxmlc.)
|
|
|||||
Регистрация: Oct 2011
Сообщений: 14
|
да,может подход не оптимизирован,но я пока не знаю как можно разбить картинку на треугольники и с помощью uvtData преобразовать его,чтобы увидеть псевдо3д и исказить по полусфере картинку
|
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Там просто неладно слишком многое, чтоб это имело смысл править. Сфера там точно не рисуется. Возьмите 3д движок какой-нить, там наверняка есть пример со сферой.
Ну или нарисуйте сперва один треугольник при помощи drawTriangles. Потом два, много, учитесь делать перспективу и пр.)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
kilka по Away3D есть просто гора уроков в инете, и даже есть пара книжек, причем написанных самими авторами движка. Эвэй точно справится с этой задачей запросто
|
Часовой пояс GMT +4, время: 01:33. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|