Rotate by range(radio button)
by 蔡 育曄
HTML
<input type=text id='degress'>
<div id = 'spcontrol'>
<input type=range min=-15 max=15 id='speed'> 轉速控制
</div>
<div id='option'>
<input type=radio class='tp' name='obj' value='box'>box
<br>
<input type=radio class='tp' name='obj' value='cylinder' checked> cylinder
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stats.js/r16/Stats.min.js"></script>
CSS
body {
overflow: hidden;
}
#degress {
position: absolute;
text-align: center;
bottom: 3%;
right: 42%;
width: 12.4%;
}
#spcontrol {
position: absolute;
top: 8vh;
left: 40%;
}
#option {
position: absolute;
top: 9vh;
left: 2%;
}
JavaScript
var renderer, camera, controls, scene, axes, stats, angle = 0;
var sp = 0,
cube, cylinder, object,
tmp = true;
$('#speed').change(function() {
sp = $(this).val();
});
$('.tp').click(function() {
if ($(this).val() == 'box' && cube.material.visible == false) {
cube.material.visible = !cube.material.visible;
cylinder.material.visible = !cylinder.material.visible;
} else if ($(this).val() == 'cylinder' && cylinder.material.visible == false) {
cube.material.visible = !cube.material.visible;
cylinder.material.visible = !cylinder.material.visible;
}
});
init();
animate();
function buildObj() {
var obj = new THREE.Object3D();
cube = new THREE.Mesh(new THREE.BoxGeometry(16, 3, 3), new THREE.MeshNormalMaterial());
cylinder = new THREE.Mesh(new THREE.CylinderGeometry(2, 2, 16, 32), new THREE.MeshNormalMaterial());
cube.material.visible = false;
cylinder.rotation.z = Math.PI / 2;
obj.add(cylinder);
obj.add(cube);
return obj;
}
function init() {
renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setSize(window.innerWidth, window.innerHeight); //設置畫面大小
renderer.setClearColor(0x888888);
document.body.appendChild(renderer.domElement);
camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.z = 50; // important
//camera.lookAt (new THREE.Vector3(0,0,0));
controls = new THREE.OrbitControls(camera, renderer.domElement);
scene = new THREE.Scene();
let gridXZ = new THREE.GridHelper(100, 10, 'red', 'white');
// ↑ 設置網格: GridHelper(設置大小,分成幾等份,網格中線顏色,網格線顏色),若分成積數等份,第三格不會起作用
scene.add(gridXZ);
axes = new THREE.AxisHelper(10);
scene.add(axes);
stats = new Stats();
stats.domElement.style.position = 'absolute';
stats.domElement.style.bottom = '0vh';
stats.domElement.style.zIndex = 100;
document.body.appendChild(stats.domElement);
object = buildObj();
scene.add(object);
window.addEventListener('resize', onWindowResize,...