واضح آرشیو وب فارسی:سایت ریسک: عمق در فلش saberkm2000 05 ارديبهشت 1385, 11:48باشه فارسي تايپ مي كنم ولي ميشه خودم اين كار رو بكنم آخه محيط فلش يك محيط 2 بعدي من ميخوام با نوشتن اسكريپت مناسب با اضافه كردن عمق كه همون z باشه بعضي كار هايي رو انجام بدم و فضاي سه بعدي درست كنم اگر راهنمايي كني ممنون ميشم:-? aminflash 05 ارديبهشت 1385, 12:06با اکشن اسکریپت سه بعدی نوشتن خیلی سخته! یادمه ما یه زمانی با پاسکال یه سه بعدی ساختیم پدرومون دراومد! amir_s 05 ارديبهشت 1385, 22:19همونطور که امین گفت خیلی سخته ... باید در خیلی از مواقع از توابع Math.sin و Math.cos و کلا توابع مربوط به Math استفاده کنید ... که باید ریاضیات و قدرت درک سه بعدی خیلی خوبی داشته باشید ... اگر نمی خواهید که کار به صورت دینامیک باشه بهتره از برنامه های جانبی مثل Swift3D استفاده کنید . PANII 06 ارديبهشت 1385, 00:34این یک نمونه کار سه بعدیه یک مکعب کد را داخل فریم اول کپی کن و بعد هم بهاش می تونی حسابی کلنجار بری cubeData = [{colour:0xff9900, // Bottom Sides:[ {x:-50, y:50, z:50}, // UL {x:-50, y:50, z:-50}, // OL {x:50, y:50, z:-50}, // OR {x:50, y:50, z:50} // UR ]}, {colour:0xff9900, // Top Sides:[ {x:-50, y:-50, z:-50}, // UL {x:-50, y:-50, z:50}, // OL {x:50, y:-50, z:50}, // OR {x:50, y:-50, z:-50} // UR ]}, {colour:0xff8800, // Right Sides:[ {x:50, y:-50, z:50}, // OR {x:50, y:50, z:50}, // UR {x:50, y:50, z:-50}, // UL {x:50, y:-50, z:-50} // OL ]}, {colour:0xff8800, // Left Sides:[ {x:-50, y:-50, z:-50}, // OR {x:-50, y:50, z:-50}, // UR {x:-50, y:50, z:50}, // UL {x:-50, y:-50, z:50} // OL ]}, {colour:0xffaa 00, // Front Sides:[ {x:-50, y:50, z:-50}, // UL {x:-50, y:-50, z:-50}, // OL {x:50, y:-50, z:-50}, // OR {x:50, y:50, z:-50} // UR ]}, {colour:0xffaa 00, // Back Sides:[ {x:50, y:50, z:50}, // UL {x:50, y:-50, z:50}, // OL {x:-50, y:-50, z:50}, // OR {x:-50, y:50, z:50} // UR ]} ]; Objekt3d = function (data 3d) { this.data 3d = data 3d; this.move3d = function(x, y, z) { var k = 0; while (k<this.data 3d.length) { var i = 0; while (i<this.data 3d[k].Sides.length) { this.data 3d[k].Sides[i].x = this.data 3d[k].Sides[i].x+x; this.data 3d[k].Sides[i].y = this.data 3d[k].Sides[i].y+y; this.data 3d[k].Sides[i].z = this.data 3d[k].Sides[i].z+z; i++; } k++; } }; this.scale3d = function(x, y, z) { var k = 0; while (k<this.data 3d.length) { var i = 0; while (i<this.data 3d[k].Sides.length) { this.data 3d[k].Sides[i].x = this.data 3d[k].Sides[i].x*x; this.data 3d[k].Sides[i].y = this.data 3d[k].Sides[i].y*y; this.data 3d[k].Sides[i].z = this.data 3d[k].Sides[i].z*z; i++; } k++; } }; this.rotate3d = function(xa, ya) { var rad = Math.PI/180; var px; var py; var pz; var sin_xa; var sin_ya; var cos_xa; var cos_ya; var tempz; var k = 0; while (k<this.data 3d.length) { var i = 0; while (i<this.data 3d[k].Sides.length) { px = this.data 3d[k].Sides[i].x; py = this.data 3d[k].Sides[i].y; pz = this.data 3d[k].Sides[i].z; cos_ya = Math.cos(ya*rad); sin_ya = Math.sin(ya*rad); cos_xa = Math.cos(xa*rad); sin_xa = Math.sin(xa*rad); tempz = (pz*cos_ya)-(px*sin_ya); this.data 3d[k].Sides[i].x = (pz*sin_ya)+(px*cos_ya); this.data 3d[k].Sides[i].y = (py*cos_xa)-(tempz*sin_xa); this.data 3d[k].Sides[i].z = (py*sin_xa)+(tempz*cos_xa); i++; } k++; } }; }; Kamera 3d = function (Objekt3d, distance, angle, loc) { this.Objekt3d = Objekt3d; this.distance = distance; this.angle = angle; this.loc = loc; this.mc = this.create(); }; Kamera 3d.prototype.create = function() { return (this.loc.createEmptyMovieClip("camMC"+camNum, camNum++)); }; Kamera 3d.prototype.render = function() { this.mc.clear(); var z; var pers; var sx; var sy; var tx; var ty; var polygon; var k = 0; while (k<this.Objekt3d.data 3d.length) { polygon = []; var i = 0; while (i<this.Objekt3d.data 3d[k].Sides.length) { z = this.Objekt3d.data 3d[k].Sides[i].z+this.distance; pers = this.angle/z; sx = this.Objekt3d.data 3d[k].Sides[i].x*pers; sy = this.Objekt3d.data 3d[k].Sides[i].y*pers; polygon.push({sx:sx, sy:sy}); i++; } z = ((polygon[1].sx-polygon[0].sx)*(polygon[2].sy-polygon[0].sy))-((polygon[1].sy-polygon[0].sy)*(polygon[2].sx-polygon[0].sx)); if (z>0) { this.mc.beginFill(this.Objekt3d.data 3d[k].colour, this.Objekt3d.data 3d[k].colour); this.mc.moveTo(polygon[0].sx, polygon[0].sy); this.mc.lineTo(polygon[1].sx, polygon[1].sy); this.mc.lineTo(polygon[2].sx, polygon[2].sy); this.mc.lineTo(polygon[3].sx, polygon[3].sy); this.mc.lineTo(polygon[0].sx, polygon[0].sy); } k++; } }; Cube3d = new Objekt3d(cubeData); Szene3D = new Kamera 3d(Cube3d, 200, 400, _root); Szene3D.render(); Szene3D.mc._x = 275; Szene3D.mc._y = 175; _root.onEnterFrame = function() { Cube3d.rotate3d((this._xmouse+100)/100, (this._ymouse+200)/100); Szene3D.render(); }; amir_s 06 ارديبهشت 1385, 14:53ممنون پانی عزیز ... ولی خوب ... خیلی درست کردن همچین چیزایی سخته ! همونطور که گفتم "اگر نمی خواهید که کار به صورت دینامیک باشه بهتره از برنامه های جانبی مثل Swift3D استفاده کنید ."
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 246]