Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    417

    Rotazione oggetto 360° su se stesso

    Ciao a tutti come posso fare l'effetto di un cubo che ruota?

    grazie ciao a presto

  2. #2
    con un programma 3D tipo Swift3D

  3. #3
    Utente di HTML.it L'avatar di kansuke
    Registrato dal
    Apr 2004
    Messaggi
    350
    non c'è bisogno di scomodare il 3D per un cubo

    sono tre facce che si deformano
    se non ha nulla di 3d sotto mano può farlo semplicemente con un'interpolazione modificando le facce visibili.
    "Hanno chiuso le mandrie nelle stalle
    perchè liberi siamo fino all'alba."
    R. Kipling

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    417
    e che codice uso?

  5. #5
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    vi ricordate quel codice di nega che creava un cubo rotante solo con as....ke mito

    mo lo posto..anche se dubito ke qualcuno ci capirà qualcosa... (funziona solo col player 6 non si sà xke..)

    LightSource = function (x, y, z, brightness) {
    this.x = x;
    this.y = y;
    this.z = z;
    this.brightness = brightness;
    this.magnitude = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
    };

    this.createEmptyMovieClip("center", 0);

    center._x = Stage.width / 2;
    center._y = Stage.height / 2;
    inc = .5;
    focalLength = 400;
    rad = Math.PI/180;

    light = new LightSource(-20000, -20000, 20000, 100);

    cube = {};

    cube.vertexList = [];
    cube.side = [];

    cube.side.push({vertices:[0, 1, 2, 3], sideColor:0x6600CC});
    cube.side.push({vertices:[2, 1, 5, 6], sideColor:0x6600CC});
    cube.side.push({vertices:[1, 0, 4, 5], sideColor:0x6600CC});
    cube.side.push({vertices:[5, 4, 7, 6], sideColor:0x6600CC});
    cube.side.push({vertices:[0, 3, 7, 4], sideColor:0x6600CC});
    cube.side.push({vertices:[3, 2, 6, 7], sideColor:0x6600CC});

    cube.vertexList.push({x:-50, y:-50, z:50});
    cube.vertexList.push({x:50, y:-50, z:50});
    cube.vertexList.push({x:50, y:-50, z:-50});
    cube.vertexList.push({x:-50, y:-50, z:-50});
    cube.vertexList.push({x:-50, y:50, z:50});
    cube.vertexList.push({x:50, y:50, z:50});
    cube.vertexList.push({x:50, y:50, z:-50});
    cube.vertexList.push({x:-50, y:50, z:-50});

    vertices = [];

    backface = function (x, y) {
    var cax = x[2] - x[0];
    var cay = y[2] - y[0];
    var bcx = x[1] - x[2];
    var bcy = y[1] - y[2];
    return (cax * bcy < cay * bcx);
    };

    render = function (model) {
    center.clear();
    center.lineStyle(2, 0, 100);
    verts2D = [];
    depthArray = [];
    for (var i = 0; i < model.side.length; i++) {
    var zDepth = 0;
    for (var j = 0; j < model.side[i].vertices.length; j++) {
    var whichVert = model.side[i].vertices[j];
    if (verts2D[whichVert] == undefined) {
    verts2D[whichVert] = {};
    var scale = focalLength / (focalLength - model.vertexList[whichVert].z);
    verts2D[whichVert].x = model.vertexList[whichVert].x * scale;
    verts2D[whichVert].y = model.vertexList[whichVert].y * scale;
    }
    zDepth += model.vertexList[whichVert].z;
    }
    depthArray.push([model.side[i], zDepth]);
    }
    depthArray.sort(function (a, b) { return a[1] > b[1];});
    for (var i = 0; i < depthArray.length; i++) {
    var sideVerts = depthArray[i][0].vertices;
    if (!backface([verts2D[sideVerts[0]].x, verts2D[sideVerts[1]].x, verts2D[sideVerts[2]].x], [verts2D[sideVerts[0]].y, verts2D[sideVerts[1]].y, verts2D[sideVerts[2]].y])) {
    center.moveTo(verts2D[sideVerts[0]].x, verts2D[sideVerts[0]].y);
    center.beginFill(getSideColor(model, depthArray[i][0]), 100);
    for (var j = 1; j < sideVerts.length; j++) {
    center.lineTo(verts2D[sideVerts[j]].x, verts2D[sideVerts[j]].y);
    }
    center.lineTo(verts2D[sideVerts[0]].x, verts2D[sideVerts[0]].y);
    center.endFill();
    }
    }
    };

    getSideColor = function (model, side) {
    var col = side.sideColor.toString(16);
    while (col.length < 6) {
    col = "0" + col;
    }
    var verts = [model.vertexList[side.vertices[0]], model.vertexList[side.vertices[1]], model.vertexList[side.vertices[2]]];
    var lightFactor = factorLightAngle(verts);
    var r = parseInt(col.substr(0, 2), 16) * lightFactor;
    var g = parseInt(col.substr(2, 2), 16) * lightFactor;
    var b = parseInt(col.substr(4, 2), 16) * lightFactor;
    return r << 16 | g << 8 | b;
    };

    factorLightAngle = function (vertices) {
    var U = [(vertices[0].x - vertices[1].x), (vertices[0].y - vertices[1].y), (vertices[0].z - vertices[1].z)];
    var V = [(vertices[1].x - vertices[2].x), (vertices[1].y - vertices[2].y), (vertices[1].z - vertices[2].z)];
    var p = [((U[1] * V[2]) - (U[2] * V[1])), -((U[0] * V[2]) - (U[2] * V[0])), ((U[0] * V[1]) - (U[1] * V[0]))];
    var magP = Math.sqrt((p[0] * p[0]) + (p[1] * p[1]) + (p[2] * p[2]));
    var dP = ((p[0] * light.x) + (p[1] * light.y) + (p[2] * light.z));
    return ((Math.acos(dP / (magP * light.magnitude)) / Math.PI) * light.brightness / 100);
    };
    rotate = function (model, angX, angY, angZ) {
    var sinX = Math.sin(angX * rad);var cosX = Math.cos(angX * rad);
    var sinY = Math.sin(angY * rad);var cosY = Math.cos(angY * rad);
    var sinZ = Math.sin(angZ * rad);var cosZ = Math.cos(angZ * rad);
    for(var i = 0; i < model.vertexList.length; i++){
    var vert = model.vertexList[i];
    var rx1 = vert.x;
    var ry1 = vert.y * cosX - vert.z * sinX;
    var rz1 = vert.z * cosX + vert.y * sinX;
    var rx2 = rx1 * cosY - rz1 * sinY;
    var ry2 = ry1;
    var rz2 = rz1 * cosY + rx1 * sinY;
    var rx3 = rx2 * cosZ - ry2 * sinZ;
    var ry3 = ry2 * cosZ + rx2 * sinZ;
    var rz3 = rz2;
    vert.x = rx3;vert.y = ry3;vert.z = rz3;
    };
    }
    center.onEnterFrame = function() {
    rotX += Key.isDown(Key.DOWN) * inc - Key.isDown(Key.UP) * inc;
    rotY += Key.isDown(Key.LEFT) * inc - Key.isDown(Key.RIGHT) * inc;
    rotate(cube, rotX, rotY, rotZ);
    render(cube);
    };




    buon appetito...

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    417
    non mi va

  7. #7
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    l'hai pubblicato con il flash player 6?

  8. #8
    Utente di HTML.it L'avatar di kansuke
    Registrato dal
    Apr 2004
    Messaggi
    350
    Originariamente inviato da ubi1
    e che codice uso?
    lo puoi fare anche senza codice!!
    ma dipende che ci devi fare

    se poi quello che è stato postato ti va a posto

    amen
    "Hanno chiuso le mandrie nelle stalle
    perchè liberi siamo fino all'alba."
    R. Kipling

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.