<!DOCTYPE HTML>
<html lang="zh-cn">
<head>
<title>HTML5 云朵效果</title>
<meta charset="utf-8">、
<style type="text/css">
body {
background-color: #326696;
margin: 0px;
overflow: hidden;
font-family:Monospace;
font-size:13px;
text-align:center;
font-weight: bold;
text-align:center;
}
a {
color:#0078ff;
}
</style>
</head>
<body>
<script type="text/javascript" src="assets/three.min.js"></script>
<script type="text/javascript" src="assets/Detector.js"></script>
<script id="vs" type="x-shader/x-vertex">
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}
</script>
<script id="fs" type="x-shader/x-fragment">
uniform sampler2D map;
uniform vec3 fogColor;
uniform float fogNear;
uniform float fogFar;
varying vec2 vUv;
void main() {
float depth = gl_FragCoord.z / gl_FragCoord.w;
float fogFactor = smoothstep( fogNear, fogFar, depth );
gl_FragColor = texture2D( map, vUv );
gl_FragColor.w *= pow( gl_FragCoord.z, 20.0 );
gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );
}
</script>
<script type="text/javascript">
if ( ! Detector.webgl ) Detector.addGetWebGLMessage();
var container;
var camera, scene, renderer;
var mesh, geometry, material;
var mouseX = 0, mouseY = 0;
var start_time = Date.now();
var windowHalfX = window.innerWidth / 2;
var windowHalfY = window.innerHeight / 2;
init();
function init() {
container = document.createElement( 'div' );
document.body.appendChild( container );
// Bg gradient
var canvas = document.createElement( 'canvas' );
canvas.width = 32;
canvas.height = window.innerHeight;
var context = canvas.getContext( '2d' );
var gradient = context.createLinearGradient( 0, 0, 0, canvas.height );
gradient.addColorStop(0, "#1e4877");
gradient.addColorStop(0.5, "#4584b4");
context.fillStyle = gradient;
context.fillRect(0, 0, canvas.width, canvas.height);
container.style.background = 'url(' + canvas.toDataURL('image/png') + ')';
container.style.backgroundSize = '32px 100%';
//
camera = new THREE.PerspectiveCamera( 30, window.innerWidth / window.innerHeight, 1, 3000 );
camera.position.z = 6000;
scene = new THREE.Scene();
geometry = new THREE.Geometry();
var texture = THREE.ImageUtils.loadTexture( 'cloud10.png', null, animate );
texture.magFilter = THREE.LinearMipMapLinearFilter;
texture.minFilter = THREE.LinearMipMapLinearFilter;
var fog = new THREE.Fog( 0x4584b4, - 100, 3000 );
material = new THREE.ShaderMaterial( {
uniforms: {
"map": { type: "t", value: texture },
"fogColor" : { type: "c", value: fog.color },
"fogNear" : { type: "f", value: fog.near },
"fogFar" : { type: "f", value: fog.far },
},
vertexShader: document.getElementById( 'vs' ).textContent,
fragmentShader: document.getElementById( 'fs' ).textContent,
depthWrite: false,
depthTest: false,
transparent: true
} );
var plane = new THREE.Mesh( new THREE.PlaneGeometry( 64, 64 ) );
for ( var i = 0; i < 8000; i++ ) {
plane.position.x = Math.random() * 1000 - 500;
plane.position.y = - Math.random() * Math.random() * 200 - 15;
plane.position.z = i;
plane.rotation.z = Math.random() * Math.PI;
plane.scale.x = plane.scale.y = Math.random() * Math.random() * 1.5 + 0.5;
THREE.GeometryUtils.merge( geometry, plane );
}
mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );
mesh = new THREE.Mesh( geometry, material );
mesh.position.z = - 8000;
scene.add( mesh );
renderer = new THREE.WebGLRenderer( { antialias: false } );
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );
document.addEventListener( 'mousemove', onDocumentMouseMove, false );
window.addEventListener( 'resize', onWindowResize, false );
}
function onDocumentMouseMove( event ) {
mouseX = ( event.clientX - windowHalfX ) * 0.25;
mouseY = ( event.clientY - windowHalfY ) * 0.15;
}
function onWindowResize( event ) {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize( window.innerWidth, window.innerHeight );
}
function animate() {
requestAnimationFrame( animate );
position = ( ( Date.now() - start_time ) * 0.03 ) % 8000;
camera.position.x += ( mouseX - camera.position.x ) * 0.01;
camera.position.y += ( - mouseY - camera.position.y ) * 0.01;
camera.position.z = - position + 8000;
renderer.render( scene, camera );
}
</script>
<script src="./assets/jquery.min.js"></script>
</body>
</html>
没有合适的资源?快使用搜索试试~ 我知道了~
3D仿真云.zip
共6个文件
js:3个
png:1个
html:1个
需积分: 5 0 下载量 47 浏览量
2024-06-23
00:56:06
上传
评论
收藏 188KB ZIP 举报
温馨提示
仿真是一种通过建立模型来模拟现实世界或虚拟场景的技术,广泛应用于工程、科研和教育等领域。 仿真技术的核心是计算机模拟,它利用计算机程序和数据来表示现实世界的系统或过程,以便研究、分析或培训。以下是关于仿真技术的详细介绍: 仿真类型 按时间分类:仿真可以分为实时仿真(与现实时间同步)和非实时仿真(加速或减速)。 按形式分类:分为物理仿真(使用实物模型)和数字仿真(完全基于计算机模拟)。 仿真步骤 定义问题:明确仿真的目的和需求。 建立模型:根据实际系统抽象出可计算的模型。 编程实现:将模型用计算机语言实现,并验证其正确性。 运行实验:进行多次实验,收集数据。 结果分析:分析数据,得出结论,并对模型进行校核和验证。 应用领域 制造业:用于产品设计、生产线优化等。 医疗健康:用于手术模拟、疾病传播模拟等。 教育培训:提供虚拟实操环境,增强理解和操作能力。 交通系统:用于交通流量分析和事故模拟。 军事防务:用于战术模拟和训练。 仿真软件 MATLAB Simulink:广泛用于工程领域的仿真软件。 ANSYS:主要用于有限元分析的仿真软件。 LabVIEW:用于数据采集和仪器控制的图形编程环境。
资源推荐
资源详情
资源评论
收起资源包目录
3D仿真云.zip (6个子文件)
simulation
.DS_Store 6KB
cloud10.png 57KB
assets
Detector.js 2KB
three.min.js 397KB
jquery.min.js 92KB
index.html 5KB
共 6 条
- 1
资源评论
热爱嵌入式的小佳同学
- 粉丝: 1w+
- 资源: 2353
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功