Skip to content

Commit 591163d

Browse files
committed
updated tutorials, examples, and generally polishing and cleaning up loose ends
1 parent d946a60 commit 591163d

15 files changed

+341
-402
lines changed

i18n-tracking.yml

Lines changed: 104 additions & 88 deletions
Large diffs are not rendered by default.

src/assets/learn/basic3d/cameraExample.html

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
padding: 0;
1313
margin: 0;
1414
font-family: monospace;
15-
font-size: 16px;
15+
font-size: 14px;
1616
background-color: #dcdcdc
1717
}
1818

@@ -27,7 +27,7 @@
2727
flex-direction: column;
2828
text-align: center;
2929
justify-content: space-evenly;
30-
margin: 0px 10px;
30+
margin: 0px 5px;
3131
}
3232

3333
#controlsContainer {
@@ -36,7 +36,7 @@
3636
}
3737

3838
#controlsContainer label {
39-
padding: 15px;
39+
padding: 10px;
4040
}
4141
</style>
4242
</head>
@@ -45,9 +45,13 @@
4545
<div id="pageContainer">
4646
<div id="sketchContainer"></div>
4747
<div id="controlsContainer">
48-
<label>Ortho?:
49-
<input id="cameraType" type="checkbox" />
48+
<label>Ortho:
49+
<input id="cameraTypeOrtho" name="cameraType" type="radio" />
5050
</label>
51+
<label>Perspective:
52+
<input id="cameraTypePerspective" name="cameraType" type="radio" checked/>
53+
</label>
54+
5155
<label>camera fov: <input id="cameraFov" type="range" step="0.001" min="69" max="72.5" value="70"/></label>
5256

5357
<label>x position: <input id="cameraPosX" type="range" step="0.1" min="-500" max="500" value="200"/></label>
Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,53 @@
11
let fovSlider;
22
let camPosX, camPosY, camPosZ;
3-
let selectCameraType;
4-
let cameraType;
3+
let cameraTypeOrtho, cameraTypePerspective;
54
let methodText;
65

76
function setup() {
87
let canvas = createCanvas(350, 350, WEBGL);
9-
canvas.parent("sketchContainer")
8+
canvas.parent('sketchContainer');
109

1110
debugMode();
12-
13-
fovSlider = document.querySelector('#cameraFov')
14-
selectCameraType = document.querySelector('#cameraType')
1511

16-
camPosX = document.querySelector('#cameraPosX')
17-
camPosY = document.querySelector('#cameraPosY')
18-
camPosZ = document.querySelector('#cameraPosZ')
12+
fovSlider = document.querySelector('#cameraFov');
13+
cameraTypeOrtho = document.querySelector('#cameraTypeOrtho');
14+
cameraTypePerspective = document.querySelector('#cameraTypePerspective');
1915

20-
methodText = document.querySelector('#methodText')
16+
camPosX = document.querySelector('#cameraPosX');
17+
camPosY = document.querySelector('#cameraPosY');
18+
camPosZ = document.querySelector('#cameraPosZ');
19+
20+
methodText = document.querySelector('#methodText');
21+
22+
describe(
23+
'an interactive sketch that allows you to move either an ortho camera or a perspective camera in 3D, as well as change the perspective camera FOV'
24+
);
2125
}
2226

2327
function draw() {
2428
background(220);
25-
26-
// orbitControl()
2729

28-
if(selectCameraType.checked) {
29-
camera(camPosX.value,camPosY.value,camPosZ.value)
30-
ortho(-width / 2, width / 2, -height / 2, height / 2, 0, 500);
31-
} else {
32-
camera(camPosX.value,camPosY.value,camPosZ.value)
33-
perspective(fovSlider.value)
34-
}
30+
if (cameraTypeOrtho.checked) {
31+
camera(camPosX.value, camPosY.value, camPosZ.value);
32+
ortho(-width / 2, width / 2, -height / 2, height / 2, 0, 800);
33+
} else if (cameraTypePerspective.checked) {
34+
camera(camPosX.value, camPosY.value, camPosZ.value);
35+
perspective(fovSlider.value);
36+
}
3537

3638
box(50);
3739

38-
methodText.innerHTML = selectCameraType.checked ? 'ortho(); </br>' : 'perspective('+parseFloat(fovSlider.value).toFixed(1)+'); </br>'
39-
methodText.innerHTML += '<br />camera('+parseFloat(camPosX.value).toFixed(1)+','+parseFloat(camPosY.value).toFixed(1)+','+parseFloat(camPosZ.value).toFixed(1)+');'
40-
}
40+
methodText.innerHTML = cameraTypeOrtho.checked
41+
? 'ortho(); </br>'
42+
: 'perspective(' + parseFloat(fovSlider.value).toFixed(1) + '); </br>';
43+
methodText.innerHTML +=
44+
'<br />camera(' +
45+
parseFloat(camPosX.value).toFixed(1) +
46+
',' +
47+
parseFloat(camPosY.value).toFixed(1) +
48+
',' +
49+
parseFloat(camPosZ.value).toFixed(1) +
50+
');';
51+
52+
fovSlider.disabled = cameraTypeOrtho.checked;
53+
}

src/assets/learn/basic3d/lightingExample.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ function setup() {
1414
toggleDirectional = document.querySelector("#toggleDirectional");
1515
toggleSpotlight = document.querySelector("#toggleSpotlight");
1616
togglePoint = document.querySelector("#togglePoint");
17+
18+
describe(
19+
'an interactive sketch that allows you to toggle on and off a number of different lights with indicators on a box shape.'
20+
);
1721
}
1822

1923
function draw() {

src/assets/learn/basic3d/materialsExample.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,19 +50,19 @@
5050
</label>
5151

5252
<label style="color:black;">
53-
normalMaterial: <input id="toggleNormalMaterial" type="checkbox" checked/>
53+
normalMaterial: <input id="toggleNormalMaterial" name="materialSelect" type="radio" checked/>
5454
</label>
5555

5656
<label style="color:red;">
57-
ambientMaterial: <input id="toggleAmbientMaterial" type="checkbox"/>
57+
ambientMaterial: <input id="toggleAmbientMaterial" name="materialSelect" type="radio"/>
5858
</label>
5959

60-
<label style="color:green;">
61-
emissiveMaterial: <input id="toggleEmissiveMaterial" type="checkbox"/>
60+
<label style="color:blue;">
61+
emissiveMaterial: <input id="toggleEmissiveMaterial" name="materialSelect" type="radio"/>
6262
</label>
6363

64-
<label style="color:blue;">
65-
specularMaterial: <input id="toggleSpecularMaterial" type="checkbox"/>
64+
<label style="color:green;">
65+
specularMaterial: <input id="toggleSpecularMaterial" name="materialSelect" type="radio"/>
6666
</label>
6767
</div>
6868
</div>

src/assets/learn/basic3d/materialsExample.js

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,18 @@ toggleSpecularMaterial;
77

88
function setup() {
99
let canvas = createCanvas(350, 350, WEBGL);
10-
canvas.parent("sketchContainer")
10+
canvas.parent("sketchContainer");
1111

1212
debugMode();
1313

14-
shapeType = document.querySelector('#shapeType')
14+
shapeType = document.querySelector('#shapeType');
1515

16-
toggleNormalMaterial = document.querySelector('#toggleNormalMaterial')
17-
toggleAmbientMaterial = document.querySelector('#toggleAmbientMaterial')
18-
toggleEmissiveMaterial = document.querySelector('#toggleEmissiveMaterial')
19-
toggleSpecularMaterial = document.querySelector('#toggleSpecularMaterial')
16+
toggleNormalMaterial = document.querySelector('#toggleNormalMaterial');
17+
toggleAmbientMaterial = document.querySelector('#toggleAmbientMaterial');
18+
toggleEmissiveMaterial = document.querySelector('#toggleEmissiveMaterial');
19+
toggleSpecularMaterial = document.querySelector('#toggleSpecularMaterial');
20+
21+
describe('an interactive example that allows you to toggle different materials on either a box or sphere shape');
2022
}
2123

2224
function draw() {
@@ -25,29 +27,31 @@ function draw() {
2527

2628
let locX = mouseX - width / 2;
2729
let locY = mouseY - height / 2;
28-
pointLight(255, 255, 255, locX, locY, 50);
30+
specularColor(255);
31+
directionalLight(127, 127, 127, 1.0-locX, 1.0-locY, -1);
32+
ambientLight(64);
2933

3034
if(toggleNormalMaterial.checked) {
3135
normalMaterial();
3236
}
3337

3438
if(toggleAmbientMaterial.checked) {
35-
ambientMaterial(255, 0, 0);
39+
ambientMaterial(128, 0, 0);
3640
}
3741

3842
if(toggleEmissiveMaterial.checked) {
39-
emissiveMaterial(0, 255, 0);
43+
emissiveMaterial(0, 0, 128);
4044
}
4145

4246
if(toggleSpecularMaterial.checked) {
43-
specularMaterial(0, 0, 255);
47+
specularMaterial(0, 128, 0);
4448
}
4549

4650
if(shapeType.checked) {
4751
sphere(50);
4852
} else {
4953
push();
50-
rotateY(PI/4)
54+
rotateY(PI/4);
5155
box(50);
5256
pop();
5357
}
@@ -56,7 +60,7 @@ function draw() {
5660
push();
5761
translate(locX, locY, 50);
5862
scale(0.2);
59-
noLights()
63+
noLights();
6064
fill('blue');
6165
sphere();
6266
pop();

src/assets/learn/basic3d/rotateExample.js

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,8 @@ let p;
44
function setup() {
55
let canvas = createCanvas(350, 350, WEBGL);
66
canvas.parent("sketchContainer")
7-
87
camera(0,-200,200,0,0,0)
98

10-
//angleSlider = createSlider(0, PI * 2, 0, 0.001);
11-
129
// note these are all angle ranges:
1310
xAxisSlider = document.querySelector('#xAxis');
1411
yAxisSlider = document.querySelector('#yAxis');
@@ -17,36 +14,27 @@ function setup() {
1714
debugMode();
1815

1916
p = document.querySelector('#axisText');
17+
18+
describe('an interactive example that visualizes different axes of rotation on a torus shape');
2019
}
2120

2221
function draw() {
2322
background(220);
24-
// orbitControl();
25-
26-
// let rotateVector = createVector(
27-
// xAxisSlider.value(),
28-
// yAxisSlider.value(),
29-
// zAxisSlider.value()
30-
// );
31-
23+
3224
push();
33-
// rotateVector.normalize()
34-
// rotate(angleSlider.value(), rotateVector);
35-
36-
// added:
3725
rotateX(xAxisSlider.value);
3826
rotateY(yAxisSlider.value);
3927
rotateZ(zAxisSlider.value);
40-
41-
// also added: draw lines along x, y, z axes in rotated space
28+
29+
// draw lines along x, y, z axes in rotated space
4230
strokeWeight(4);
4331
stroke('red');
4432
line(0, 0, 0, 100, 0, 0);
4533
stroke('green');
4634
line(0, 0, 0, 0, 100, 0);
4735
stroke('blue');
4836
line(0, 0, 0, 0, 0, 100);
49-
37+
5038
normalMaterial();
5139
torus(30, 20);
5240
pop();
@@ -56,5 +44,5 @@ function draw() {
5644
p.innerHTML = 'angleMode(DEGREES) <br /><br />';
5745
p.innerHTML += 'rotateX('+parseFloat(degrees(xAxisSlider.value)).toFixed(1)+') <br />';
5846
p.innerHTML += 'rotateY('+parseFloat(degrees(yAxisSlider.value)).toFixed(1)+') <br />';
59-
p.innerHTML += 'rotateZ('+parseFloat(degrees(zAxisSlider.value)).toFixed(1)+') <br />'
47+
p.innerHTML += 'rotateZ('+parseFloat(degrees(zAxisSlider.value)).toFixed(1)+') <br />';
6048
}

src/assets/learn/basic3d/scaleExample.js

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,41 +3,43 @@ let p;
33

44
function setup() {
55
let canvas = createCanvas(350, 350, WEBGL);
6-
canvas.parent("sketchContainer")
6+
canvas.parent("sketchContainer");
77

88
debugMode();
99

1010
xSlider = document.querySelector('#xAxis');
1111
ySlider = document.querySelector('#yAxis');
1212
zSlider = document.querySelector('#zAxis');
1313

14-
p = document.querySelector('#axisText')
14+
p = document.querySelector('#axisText');
15+
16+
describe('an interactive example that visualizes how scale works on a box shape')
1517
}
1618

1719
function draw() {
1820
background(220);
19-
camera(0,-200,200,0,0,0)
21+
camera(0,-200,200,0,0,0);
2022

21-
push()
22-
scale(xSlider.value,ySlider.value,zSlider.value)
23+
push();
24+
scale(xSlider.value,ySlider.value,zSlider.value);
2325
box(50);
2426

25-
strokeWeight(5)
26-
stroke(255,0,0)
27-
line(-25,0,25, 25,0,25)
27+
strokeWeight(5);
28+
stroke(255,0,0);
29+
line(-25,0,25, 25,0,25);
2830

29-
stroke(0,255,0)
30-
line(0,-25,25, 0,25,25)
31+
stroke(0,255,0);
32+
line(0,-25,25, 0,25,25);
3133

32-
stroke(0,0,255)
33-
line(0,-25,-25, 0,-25,25)
34+
stroke(0,0,255);
35+
line(0,-25,-25, 0,-25,25);
3436

35-
pop()
37+
pop();
3638

3739
// draw axes
38-
push()
40+
push();
3941

40-
pop()
42+
pop();
4143

4244
p.innerHTML = 'scale('+parseFloat(xSlider.value).toFixed(2)+', '+parseFloat(ySlider.value).toFixed(2)+', '+parseFloat(zSlider.value).toFixed(2)+')';
4345
}

src/assets/learn/basic3d/titleExample.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,5 @@ function draw() {
6363
}
6464

6565
function windowResized() {
66-
resizeCanvas(windowWidth, windowHeight)
67-
console.log('check')
66+
resizeCanvas(windowWidth, windowHeight);
6867
}

0 commit comments

Comments
 (0)