Summary Files Commits Branches @commit @diff @stats
path: root / Year 2 / Computer Graphics Fundamentals / Practicum Homework / a02.html
blob: 3e3e5bce764ffec52a12f275af015798d0193c36 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<html>
	<head>
		<style>
			body { margin: 0; }
			canvas { width: 100%; height: 100% }
		</style>
	</head>
	<body>
		<script src="three.min.js"></script>
		<script>
			// От тука до "КРАЙ" е откраднато от задача 1 на практикум 2
			var renderer = new THREE.WebGLRenderer();
			renderer.setSize( window.innerWidth, window.innerHeight );
			renderer.setAnimationLoop( drawFrame );
			document.body.appendChild( renderer.domElement );

			var scene = new THREE.Scene();
			
			var aspect = window.innerWidth/window.innerHeight;
			var camera = new THREE.PerspectiveCamera( 30, aspect );
			camera.position.set( 3, 3, 8 );
			camera.lookAt( new THREE.Vector3() );
			// КРАЙ



			const s = 0.45; // scale
			var steve = new THREE.Group();
			var materialSkin  = new THREE.MeshPhongMaterial({ color: 0x8A2BE2 });
			var materialShirt = new THREE.MeshPhongMaterial({ color: 0x00FF7F });
			var materialPants = new THREE.MeshPhongMaterial({ color: 0xE6E6FA });
			var materialShoes = new THREE.MeshPhongMaterial({ color: 0x87CEFA });

			/* Torso */
			var torsoGeometry = new THREE.BoxGeometry(1.8 * s, 3.2 * s, 0.66 * s);
			steve.add(new THREE.Mesh(torsoGeometry, materialShirt));

			/* Head */
			var headGeometry = new THREE.BoxGeometry(1 * s, 1 * s, 1 * s);
			var head = new THREE.Mesh(headGeometry, materialSkin);
			head.position.set(0, torsoGeometry.parameters.height / 2 + headGeometry.parameters.height / 2, -0.1 * s);
			steve.add(head);

			/* Arms */
			var armGeometry = new THREE.BoxGeometry(0.5 * s, 3.4 * s, 0.4 * s);

			var leftArm = new THREE.Mesh(armGeometry, materialSkin);
			leftArm.position.set(-torsoGeometry.parameters.width / 2 - armGeometry.parameters.width / 2, torsoGeometry.parameters.height / 2 - armGeometry.parameters.height / 2, 0);
			steve.add(leftArm);

			var rightArm = new THREE.Mesh(armGeometry, materialSkin);
			rightArm.position.set(torsoGeometry.parameters.width / 2 + armGeometry.parameters.width / 2, torsoGeometry.parameters.height / 2 - armGeometry.parameters.height / 2, 0);
			steve.add(rightArm);

			/* Legs */
			var legGeometry = new THREE.BoxGeometry(torsoGeometry.parameters.width / 2 - 0.1 * s, 3 * s, 0.42 * s);

			var leftLeg = new THREE.Mesh(legGeometry, materialPants);
			leftLeg.position.set(-torsoGeometry.parameters.width / 2 + legGeometry.parameters.width / 2, -torsoGeometry.parameters.height / 2 - legGeometry.parameters.height / 2, 0);
			steve.add(leftLeg);

			var rightLeg = new THREE.Mesh(legGeometry, materialPants);
			rightLeg.position.set(torsoGeometry.parameters.width / 2 - legGeometry.parameters.width / 2, -torsoGeometry.parameters.height / 2 - legGeometry.parameters.height / 2, 0);
			steve.add(rightLeg);

			/* Shoes */
			var shoeGeometry = new THREE.BoxGeometry(legGeometry.parameters.width, 0.4 * s, 1 * s);

			var leftShoe = new THREE.Mesh(shoeGeometry, materialShoes);
			leftShoe.position.set(-torsoGeometry.parameters.width / 2 + shoeGeometry.parameters.width / 2, -torsoGeometry.parameters.height / 2 - legGeometry.parameters.height - shoeGeometry.parameters.height / 2, -shoeGeometry.parameters.depth / 2 + legGeometry.parameters.depth / 2);
			steve.add(leftShoe);

			var rightShoe = new THREE.Mesh(shoeGeometry, materialShoes);
			rightShoe.position.set(torsoGeometry.parameters.width / 2 - shoeGeometry.parameters.width / 2, -torsoGeometry.parameters.height / 2 - legGeometry.parameters.height - shoeGeometry.parameters.height / 2, -shoeGeometry.parameters.depth / 2 + legGeometry.parameters.depth / 2);
			steve.add(rightShoe);

			scene.add(steve);



			// От тука до "КРАЙ" е откраднато от задача 1 на практикум 2
			var light = new THREE.PointLight( );
			light.position.set( 3, 4, 5 );
			scene.add( light );
			
			light = new THREE.PointLight( );
			light.position.set( -3, 4, -5 );
			scene.add( light );

			// въртене на сцената като в микровълнова фурна
			function drawFrame()
			{
				scene.rotation.y += 0.005;
				renderer.render( scene, camera );
			}
			// КРАЙ
		</script>
	</body>
</html>