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>
|