Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save nucliweb/b8259b1bcaa1a446186c94f48665184d to your computer and use it in GitHub Desktop.
Save nucliweb/b8259b1bcaa1a446186c94f48665184d to your computer and use it in GitHub Desktop.
p5js - 3D Spikey Plane Ball
// rotation
var objRotateX = 0;
var objRotateY = 0;
var objRotateZ = 0;
function setup() {
createCanvas(windowWidth, windowHeight, WEBGL);
}
function draw() {
background(230);
doAnimate();
objRotate();
drawModel();
}
function drawModel() {
var spikeCount = 1000;
var spikeMaxLen = height/10;
var groupRadius = (height/2) - (height/10);
basicMaterial(32);
for (var s=0; s < spikeCount; s++) {
var noiseCoord = s;
var rnd = lerp(-1,1,noise(noiseCoord));
// translate
rotateY(PI*rnd);
rotateZ(PI*rnd);
translate(groupRadius,0,0);
plane(rnd * spikeMaxLen,0.5);
//reset translation
translate(-groupRadius,0,0);
rotateY(-(PI*rnd));
rotateZ(-(PI*rnd));
}
}
function doAnimate() {
// increment animation variables
objRotateX -= 0.1;
objRotateY -= 0.1;
objRotateZ -= 0.1;
}
function objRotate() {
rotateX(radians(objRotateX));
rotateY(radians(objRotateY));
rotateZ(radians(objRotateZ));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.4.17/p5.min.js"></script>
body {
background:#e6e6e6;
margin: 0;
padding: 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment