3D комната для новечков урок.

Discussion in 'Болталка' started by ^NSA^, 21 Jan 2013.

  1. ^NSA^

    ^NSA^ Elder - Старейшина

    Joined:
    3 Jul 2012
    Messages:
    64
    Likes Received:
    29
    Reputations:
    32
    Сегодня мы будем делать 3d комнату во flash использую ActionScript.

    [​IMG]


    Софт который нам нужен в в первую очередь качаем по линкам.

    1.Adobe Flash Builder 60 дней бесплатно.
    2. Flashplayer debug тут
    3. библиотека Away3d тут

    4.исходник тут

    Начинаем..

    Создаем проект New ActionScript Project.
    Project name Room3d и жмем финиш.
    [​IMG]


    распакуем наш away3d-core-fp11_4_1_0_Alpha.zip файл и папку с него src ложим сюда
    C:\Users\youname\Adobe Flash Builder 4.7

    Настраиваем последние штрихи .
    1. Подключаем библиотеку так выберите Room3d и щелчек прав кнопки мыши.Add выбираем нашу папку src.
    [​IMG]


    [​IMG]
    [​IMG]


    2.Редактируем index.template.html добавить params.wmode = "direct"; свойства .

    [​IMG]


    Настало время создать Вид и добавить на сцену обьект.
    Создаем сферу ball потом ее добавляем в сетку Mesh() и туда же добавляем материал.

    пример кода...

    Code:
    package
    {
    	import flash.display.Sprite;
    	import flash.events.Event;
    	import flash.geom.Vector3D;
    	
    	import away3d.containers.View3D;
    	import away3d.debug.AwayStats;
    	import away3d.entities.Mesh;
    	import away3d.materials.ColorMaterial;
    	import away3d.primitives.SphereGeometry;
    	
    	//Basic part One
    	public class Room3d extends Sprite
    	{
    		private var view:View3D;
    		
    		
    		public function Room3d()
    		{
    			
    			this.view  = new View3D();
    			this.view.camera.z = -700;
    			this.view.camera.y = 20;
    			this.view.camera.lookAt(new Vector3D());
    			addChild(view);
    			//stat
    			var stat:AwayStats  = new AwayStats();
    			addChild(stat);
    			
    			//create ball
    			var ball:SphereGeometry  = new SphereGeometry(200);
    			//material color
    			var material:ColorMaterial  = new ColorMaterial(0xE01B6A);
    			this.view.scene.addChild(new Mesh(ball,material));
    			//stage event
    			stage.addEventListener(Event.ENTER_FRAME,render);
    		}
    		
    		private function render(event:Event):void{
    			//change camera position
    			this.view.camera.rotationY +=2;
    			this.view.camera.rotationZ +=2;
    			this.view.camera.moveForward(2);
    			this.view.render();
    		}
    	}
    }
    
    Настала время создать что то лучше сперва создадим нашу 3D комнату поклеим обои стиле нашего форума.
    добавить место сферы наш обьект AWD..
    AWD файл содержит модель 3д подробней гооглим.

    пример кода ...

    Code:
    package
    {
    	
    	
    	import flash.display.Sprite;
    	import flash.events.Event;
    	import flash.geom.Vector3D;
    	import flash.net.URLRequest;
    	
    	import away3d.containers.View3D;
    	import away3d.debug.AwayStats;
    	import away3d.entities.Mesh;
    	import away3d.events.AssetEvent;
    	import away3d.events.LoaderEvent;
    	import away3d.library.AssetLibrary;
    	import away3d.loaders.parsers.AWD2Parser;
    	import away3d.materials.ColorMaterial;
    	import away3d.primitives.SkyBox;
    	import away3d.primitives.SphereGeometry;
    	import away3d.textures.BitmapCubeTexture;
    	import away3d.textures.BitmapTexture;
    	
    	[SWF(backgroundColor="#000000", frameRate="60",width="700",height="500")]
    	//Basic part Two
    	public class Room3d2 extends Sprite
    	{
    		private var view:View3D;
    		private var texture: BitmapTexture;
    		private var TEXTURL:String="texture.jpg";
    		private var OBJURL:String="antichat.awd";
    		private var slovo:Mesh;
    		
    		
    		public function Room3d2()
    		{
    			
    			this.view  = new View3D();
    			this.view.camera.z = -700;
    			this.view.camera.y = 20;
    			this.view.camera.lookAt(new Vector3D());
    			addChild(view);
    			//stat
    			var stat:AwayStats  = new AwayStats();
    			addChild(stat);
    			
    			//create ball
    			var ball:SphereGeometry  = new SphereGeometry(200);
    			//material color
    			var material:ColorMaterial  = new ColorMaterial(0xE01B6A);
    			//this.view.scene.addChild(new Mesh(ball,material));
    			//stage event
    			stage.addEventListener(Event.ENTER_FRAME,render);
    			
    			AssetLibrary.enableParser(AWD2Parser);
    			AssetLibrary.addEventListener(LoaderEvent.RESOURCE_COMPLETE, loadTexture);
    			AssetLibrary.load(new URLRequest(OBJURL));
    			AssetLibrary.load(new URLRequest(TEXTURL));
    			//Text002
    		}
    		
    		private function createBox3d():void{
    			//create cubeTexture
    			var cubeTexture:BitmapCubeTexture = new BitmapCubeTexture(this.texture.bitmapData,this.texture.bitmapData,this.texture.bitmapData,
    				this.texture.bitmapData,this.texture.bitmapData,this.texture.bitmapData);
    			// create SkyBox 
    			this.view.scene.addChild(new SkyBox(cubeTexture));
    			this.slovo.z = -300;
    			this.slovo.scale(4);
    			this.view.scene.addChild(slovo);
    		}
    		
    		private function loadTexture(event:LoaderEvent):void{
    			this.slovo  = Mesh(AssetLibrary.getAsset("Text002"));
    			this.texture= BitmapTexture(AssetLibrary.getAsset(TEXTURL));
    			trace("loadead");
    			this.createBox3d();
    		}
    		
    		private function render(event:Event):void{
    			//change camera position
    			this.view.camera.rotationY +=0.5;
    			this.view.camera.moveForward(5);
    			this.view.render();
    		}
    	}
    }
    Автор ^NSA^ 2013г.

    удачи в пробах.
     
    #1 ^NSA^, 21 Jan 2013
    Last edited: 30 Jan 2013
    1 person likes this.
  2. Kavalone

    Kavalone New Member

    Joined:
    16 Jan 2013
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Познавательный материал, скоро пойду на курсы 3-D maks, заинтересовала тема.