Merge pull request #3188 from palomapalmer97/master

new voxel scripts
This commit is contained in:
Brad Hefta-Gaub 2014-07-21 22:18:44 -07:00
commit 50e9646f03
3 changed files with 330 additions and 1 deletions

View file

@ -65,7 +65,7 @@ colors[4] = { red: 236, green: 174, blue: 0 };
colors[5] = { red: 234, green: 133, blue: 0 };
colors[6] = { red: 211, green: 115, blue: 0 };
colors[7] = { red: 48, green: 116, blue: 119 };
colors[8] = { red: 31, green: 64, blue: 64 };
colors[8] = { red: 36, green: 64, blue: 64 };
var numColors = 9;
var whichColor = 0; // Starting color is 'Copy' mode

226
examples/voxelsoundwaves.js Normal file
View file

@ -0,0 +1,226 @@
var wallX = 8000;
var wallY = 8000;
var wallZ = 8000;//location
var VOXELSIZE=12;//size of each voxel
var FACTOR = 0.75;
var loud=1.0;
var maxLoud=500;
var minLoud=200;//range of loudness
var maxB={color:225,direction:0,speed:1};
var minB={color:50,direction:1,speed:1};
var maxG={color:200,direction:0,speed:1};
var minG={color:30,direction:1,speed:1};
var maxR={color:255,direction:0,speed:1};
var minR={color:150,direction:1,speed:1};//color objects
var addVoxArray=[];
var removeVoxArray=[];
var numAddVox=0;
var numRemoveVox=0;//array for voxels removed and added
var height;
var wallWidth=34;
var wallHeight=25;
var maxHeight=wallHeight;
var minHeight=0;//properties of wall
var heightSamplesArray=[];
var sampleIndex=0;//declare new array of heights
var direction=1;
//initiate and fill array of heights
for(var k=0;k<wallWidth;k++)
{
heightSamplesArray[k]=0;
}
//send objects to function changeColor
function scratch()
{
changeColor(maxB);
changeColor(minB);
changeColor(maxG);
changeColor(minG);
changeColor(maxR);
changeColor(minR);
//calculates loudness
var audioAverageLoudness = MyAvatar.audioAverageLoudness * FACTOR;
loud = Math.log(audioAverageLoudness) / 5.0 * 255.0;
print("loud="+ loud);
var scalingfactor=(loud-minLoud)/(maxLoud-minLoud);
if(scalingfactor<0)
{
scalingfactor=0;
}
if(scalingfactor>1)
{
scalingfactor=1;
}
//creates diff shades for diff levels of volume
var green=(maxG.color-minG.color)*scalingfactor+minG.color;
var blue=(maxB.color-minB.color)*scalingfactor+minB.color;
var red=(maxR.color-minR.color)*scalingfactor+minR.color;
height=(maxHeight-minHeight)*scalingfactor+minHeight;
//sets height at position sampleIndex
heightSamplesArray[sampleIndex]=height;
if(loud==Number.NEGATIVE_INFINITY)
{
green=minG.color;
blue=minB.color;
red=minR.color;
}
var k=sampleIndex;
//add&remove voxels
for(var i=wallWidth-1;i>=0;i--)
{
for(var j=0;j<wallHeight;j++)
{
if(j<=heightSamplesArray[k])
{
addVoxArray[numAddVox]={x:wallX+i*VOXELSIZE, y:wallY+j*VOXELSIZE, z:wallZ};
numAddVox++;
}
else
{
removeVoxArray[numRemoveVox]={x:wallX+i*VOXELSIZE, y:wallY+j*VOXELSIZE, z:wallZ};
numRemoveVox++;
}
}
k--;
if(k<0)
{
k=wallWidth-1;
}
}
for(var k=0;k<numAddVox;k++)
{
Voxels.setVoxel(addVoxArray[k].x,addVoxArray[k].y,addVoxArray[k].z,VOXELSIZE, red, green, blue);
}
for(var k=0;k<numRemoveVox;k++)
{
Voxels.eraseVoxel(removeVoxArray[k].x,removeVoxArray[k].y,removeVoxArray[k].z,VOXELSIZE);
}
numAddVox=0;
numRemoveVox=0;
sampleIndex++;
if(sampleIndex>=wallWidth)
{
sampleIndex=0;
}
}
//color properties (shade, direction, speed)
function changeColor(color)
{
if (color.direction==1)
{
if(color.color<255)
{
color.color+=(color.speed);
}
else
{
color.direction=0;
}
}
else if(color.direction==0)
{
if(color.color>0)
{
color.color-=(color.speed);
}
else
{
color.direction=1;
}
}
}
Script.update.connect(scratch);
Voxels.setPacketsPerSecond(20000);

103
examples/voxelwall.js Normal file
View file

@ -0,0 +1,103 @@
var wallX = 700;
var wallY = 700;
var wallZ = 700;//location
var VOXELSIZE=8;
var red=225;
var blue=0;
var green=0;//color brightness
var currentStep=0;//counting number of steps
var direction=1;//left to right color change
var height=8;
var width=8;
var currentStep=0;
function step()
{
currentStep++;
if(currentStep>6000)//how long it will run
Script.stop();
for(var i=0;i<width;i++)
{
for(var j=0;j<height;j++)
{
Voxels.setVoxel(wallX+i*VOXELSIZE, wallY+j*VOXELSIZE, wallZ, VOXELSIZE, red,green,blue);
}
}
if (direction==1)
{
if(blue<255)
{
blue++;
red--;
}
else
{
direction=0;
}
}
else if(direction==0)
{
if(blue>0)
{
blue--;
red++;
}
else
{
direction=1;
}
}
}
Script.update.connect(step);
Voxels.setPacketsPerSecond(20000);