"use strict"; // 參考 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode //////////////////////////////////////////////////////////////////////////////// // 頂點順序作業 // 你的作業是找出問題並修正頂點繪製順序 // 看看函式 someObject() // 修正從 17 行開始的程式 //////////////////////////////////////////////////////////////////////////////// var camera, scene, renderer; var windowScale; function someObject(material) { var geometry = new THREE.Geometry(); // 給學生:有些資料必須被修正 // 才會顯現兩個三角形! geometry.vertices.push( new THREE.Vector3( 3, 3, 0 ) ); geometry.vertices.push( new THREE.Vector3( 7, 3, 0 ) ); geometry.vertices.push( new THREE.Vector3( 7, 7, 0 ) ); geometry.vertices.push( new THREE.Vector3( 3, 7, 0 ) ); geometry.faces.push( new THREE.Face3( 0, 1, 2 ) ); geometry.faces.push( new THREE.Face3( 2, 0, 3 ) ); var mesh = new THREE.Mesh( geometry, material ); scene.add( mesh ); } function init() { var canvasWidth = window.innerWidth; var canvasHeight = window.innerHeight; var canvasRatio = canvasWidth / canvasHeight; // 場景 scene = new THREE.Scene(); // 攝影機:Y 上,X 右,Z 前 windowScale = 10; var windowWidth = windowScale * canvasRatio; var windowHeight = windowScale; camera = new THREE.OrthographicCamera( windowWidth / - 2, windowWidth / 2, windowHeight / 2, windowHeight / - 2, 0, 40 ); var focus = new THREE.Vector3( 5,4,0 ); camera.position.x = focus.x; camera.position.y = focus.y; camera.position.z = 10; camera.lookAt( focus ); renderer = new THREE.WebGLRenderer({ antialias: true, preserveDrawingBuffer: true}); renderer.gammaInput = true; renderer.gammaOutput = true; renderer.setSize( canvasWidth, canvasHeight ); renderer.setClearColorHex( 0xFFFFFF, 1.0 ); } function addToDOM() { var container = document.getElementById('container'); var canvas = container.getElementsByTagName('canvas'); if (canvas.length>0) { container.removeChild(canvas[0]); } container.appendChild( renderer.domElement ); } function showGrids() { // 背景格線與座標軸,每格大小為 1,坐標軸交叉在 0, 0 Coordinates.drawGrid({size:100,scale:1,orientation:"z"}); Coordinates.drawAxes({axisLength:11,axisOrientation:"x",axisRadius:0.04}); Coordinates.drawAxes({axisLength:11,axisOrientation:"y",axisRadius:0.04}); } function render() { renderer.render( scene, camera ); } // 腳本本體 document.addEventListener("DOMContentLoaded", function () { try { init(); showGrids(); var material = new THREE.MeshBasicMaterial( { color: 0xF6831E, side: THREE.FrontSide } ); someObject(material); addToDOM(); render(); } catch(e) { var errorReport = "Your program encountered an unrecoverable error, can not draw on canvas. Error was:<br/><br/>"; $('#container').append(errorReport+e); } })