![]() |
|
||||||||||
|
|
|
|||||
|
Есть Plane() - квадрат. В качестве материала используется BitmapFileMaterial, в который подгружается jpg. Сам jpg не квадратный. Хочу натянуть текстуру на Plane(), сохранив при этом пропорции jpg-файла.
public function changeMat(evt:FileLoadEvent): void { var menu:DisplayObject3D = scene.getChildByName(photoElements) as DisplayObject3D; for each ( var item:DisplayObject3D in menu.children) { var mat:BitmapFileMaterial = evt.currentTarget as BitmapFileMaterial; var bmd:Bitmap = evt.currentTarget as Bitmap ; trace("BITMAP!!!!!!!="+bmd); if (mat.name==item.name) { item.material=mat; align(bmd,item); } } } function align(bmp:Bitmap, plane:DisplayObject3D):void { var ratio:Number = Math.min(SIZE / bmp.width, SIZE / bmp.height ); bmp.scaleX = bmp.scaleY = ratio; bmp.x = plane.x + (SIZE - bmp.width) / 2; bmp.y = plane.y + (SIZE - bmp.height) / 2; } ![]() |
|
|||||
|
Это Bitmap. JPG грузится с указанного в xml места.
Вот так вот нет ошибки, но и текстура не масштабируется. public function creationMenu ():void { var url:String = stroke.@picture; var m:BitmapFileMaterial = new BitmapFileMaterial (); m.doubleSided = true; m.interactive=true; m.smooth=true; m.addEventListener(FileLoadEvent.LOAD_COMPLETE, changeMat); m.name=item.name; m.texture =url; } public function changeMat(evt:FileLoadEvent): void { var menu:DisplayObject3D = scene.getChildByName(photoElements) as DisplayObject3D; for each ( var item:DisplayObject3D in menu.children) { var mat:BitmapFileMaterial = evt.currentTarget as BitmapFileMaterial; var bmd:Bitmap = new Bitmap(mat.bitmap); bmd.scaleX=0.5; trace("BITMAP!!!="+bmd.scaleX); if (mat.name==item.name) { item.material=mat; } align(bmd,item); } } function align(bmp:Bitmap, plane:DisplayObject3D) { var ratio:Number = Math.min(SIZE / bmp.width, SIZE / bmp.height ); bmp.scaleX = bmp.scaleY = ratio; bmp.x = plane.x + (SIZE - bmp.width) / 2; bmp.y = plane.y + (SIZE - bmp.height) / 2; } Последний раз редактировалось 3Desian; 14.10.2009 в 18:03. |
|
|||||
|
Уже исправил. Обратите пожалуйста внимание на код в третьем сообщении. Там теперь:
var mat:BitmapFileMaterial = evt.currentTarget as BitmapFileMaterial; var bmd:Bitmap = new Bitmap(mat.bitmap); Мне всего то нужно в квадратные плэйны вписать прямоугольные JPG не меняя их пропорций. Сейчас они растягиваются по всему квадрату тем самым искажаются. Может мне вообще не так нужно делать? Последний раз редактировалось 3Desian; 15.10.2009 в 11:45. |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|