// Задача: направете геомаркер чрез плъзгане на // форма. Геомаркерът да има кръгъл отвор. var renderer = new THREE.WebGLRenderer({antialias:true}); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setAnimationLoop( drawFrame ); document.body.appendChild( renderer.domElement ); var scene = new THREE.Scene(); scene.background = new THREE.Color( 'white' ); var aspect = window.innerWidth/window.innerHeight; var camera = new THREE.PerspectiveCamera( 30, aspect ); camera.position.set( 0, 3, 30 ); camera.lookAt( new THREE.Vector3() ); // пример с квадратична крива, а как се прави // отвор ще трябва сами да разберете (има пример // на сайта на Three.js точно за това) var shape = new THREE.Shape(); shape.moveTo( 0, -3 ); shape.quadraticCurveTo( -3, 3, 0, 3 ); shape.quadraticCurveTo( 3, 3, 0, -3 ); var hole = new THREE.Path(); hole.ellipse(0, 1.5, 1, 1); shape.holes = [hole]; // създаване на 3D формата на геомаркера var extrudeSettings = { depth: 1, bevelEnabled: true, bevelSegments: 2, steps: 2, bevelSize: 0.1, bevelThickness: 0.1, curveSegments: 60 }; var geometry = new THREE.ExtrudeGeometry( shape, extrudeSettings ); var object = new THREE.Mesh( geometry, new THREE.MeshPhongMaterial( {specular: 'white'} ) ); scene.add( object ); // светлини var light = new THREE.PointLight( 'dodgerblue', 0.75 ); // интензитет 0.75 light.position.set( 200, 50, 0 ); scene.add( light ); light = new THREE.PointLight( 'dodgerblue', 0.75 ); // интензитет 0.75 light.position.set( -200, 50, 0 ); scene.add( light ); light = new THREE.PointLight( 'hotpink', 0.75 ); // интензитет 0.75 light.position.set( 0, 50, 200 ); scene.add( light ); light = new THREE.PointLight( 'fuchsia', 0.75 ); // интензитет 0.75 light.position.set( 0, 50, -200 ); scene.add( light ); function drawFrame() { scene.rotation.y += 0.005; renderer.render( scene, camera ); }