程序员必知:【three.js练习程序】创建地球贴图

简介: 程序员必知:【three.js练习程序】创建地球贴图

<!DOCTYPE html

[/span>html

[/span>head

[/span>meta charset="utf-8"

[/span>title

[/span>script type="text/javascript" src=".\build\three.js"

[/span>script src=".\examples\js\controls\TrackballControls.js"

[/span>script src=".\examples\js\controls\DragControls.js"

[/span>style

body

{

margin: 0;

overflow: hidden;

}

[/span>body

[/span>div id="WebGL-output"

[/span>script type="text/javascript"

var camera, scene, renderer;

var sphere;

var controls;

var objects = 【】;

var fov = 45;

var near = 0.1;

var far = 1000;

init();

render();

function init() {

scene = new THREE.Scene(); //创建场景

camera = new THREE.PerspectiveCamera(fov, window.innerWidth / window.innerHeight, //代码效果参考:http://www.zidongmutanji.com/zsjx/551375.html

near, far); //创建摄像机

camera.position.x = 100;

camera.position.y = 100;

camera.position.z = 100;

camera.lookAt(scene.position);

renderer = new THREE.WebGLRenderer(); //创建一个WebGL渲染器并设置其大小

renderer.setClearColor(new THREE.Color("#000000"));

renderer.shadowMapEnabled = true;

renderer.setSize(window.innerWidth, window.innerHeight);

var ambientLight = new THREE.AmbientLight("#ffffff"); //加入场景光

scene.add(ambientLight);

// var pointLight = new THREE.PointLight("#ffffff"); //加入点光源

// pointLight.position.set(110, 110, 110);

// pointLight.castShadow = //代码效果参考:http://www.zidongmutanji.com/zsjx/141091.html

true;

//scene.add(pointLight);

var axes = new THREE.AxisHelper(200); //创建三轴表示

scene.add(axes);

controls = new THREE.TrackballControls(camera); //创建场景旋转缩放事件

controls.rotateSpeed = 2.5;

controls.zoomSpeed = 1.2;

controls.panSpeed = 0.8;

controls.noZoom = false;

controls.noPan = false;

controls.staticMoving = true;

controls.dynamicDampingFactor = 0.3;

sphere = createMesh(new THREE.SphereGeometry(100, 100, 100), "./earth.jpg");

scene.add(sphere);

window.addEventListener('resize', onWindowResize, false);

}

function createMesh(geom, imageFile) {

var texture = THREE.ImageUtils.loadTexture(imageFile);

var mat = new THREE.MeshPhongMaterial({ map: texture });

var mesh = new THREE.Mesh(geom, mat);

return mesh;

}

function onWindowResize() {

camera.aspect = window.innerWidth / window.innerHeight;

camera.updateProjectionMatrix();

renderer.setSize(window.innerWidth, window.innerHeight);

}

function render() {

requestAnimationFrame(render);

controls.update();

sphere.material.map.needsUpdate = true;

renderer.render(scene, camera);

}

document.getElementById("WebGL-output").appendChild(renderer.domElement);

不知道为什么,我再IE下能显示地球,在chrome下显示不了。

地球贴图下载地址:

相关文章
|
3月前
|
JavaScript Java Serverless
函数计算产品使用问题之如何使用Node.js编写程序
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
10天前
|
JavaScript 前端开发
利用事件循环提高 JavaScript 程序的性能
本文介绍了事件循环在JavaScript中的工作原理,以及如何通过合理利用事件循环来优化程序性能,包括异步操作、任务优先级和避免阻塞等技巧。
|
1月前
|
JavaScript 前端开发
如何使用Vue.js构建响应式Web应用程序
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用程序
|
3月前
|
存储 JavaScript 前端开发
后端程序员的前端基础-前端三剑客之JavaScript
后端程序员的前端基础-前端三剑客之JavaScript
31 4
|
4月前
|
关系型数据库 MySQL 存储
|
3月前
|
JavaScript 前端开发 程序员
程序员必看:利用JavaScript的算术运算符大幅提升代码效率?
程序员必看:利用JavaScript的算术运算符大幅提升代码效率?
|
5月前
|
前端开发 JavaScript 容器
程序技术好文:纯原生javascript下拉框表单美化实例教程
程序技术好文:纯原生javascript下拉框表单美化实例教程
85 0
|
5月前
|
JavaScript 前端开发
程序技术好文:第一百三十八节,JavaScript,封装库
程序技术好文:第一百三十八节,JavaScript,封装库
26 0
|
5月前
|
缓存 JavaScript 前端开发
老程序员分享:js刷新页面得重新加载和页面的刷新
老程序员分享:js刷新页面得重新加载和页面的刷新
40 0
|
5月前
|
缓存 JavaScript 前端开发
程序员必知:广告等第三方应用嵌入到web页面方案之使用js片段
程序员必知:广告等第三方应用嵌入到web页面方案之使用js片段
73 0