[微信小游戏+Three.JS]给场景添加反射材质,实现3D水珠移动效果

前几篇博客,我分别加好了3D移动盒子,也给场景加好了天空盒

这篇博客,就给场景再加一些效果

绘制的水珠的源代码来自Three.JS在GitHub上的demo

小游戏所用到的,修改过的JS库,大家可以移步我之前发的博客下载

直接上代码

let THREE = require(‘libs/three.js‘)

export default class Game3d {
  constructor() {
    this.scene = new THREE.Scene();
    this.camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
    this.renderer = new THREE.WebGLRenderer({
      canvas: canvas
    });
    this.start()
  }
  start() {
    this.renderer.setSize(window.innerWidth, window.innerHeight);
    this.camera.position.set(-500,150,0);
    this.camera.lookAt(this.scene.position);
    this.scene.background = new THREE.CubeTextureLoader()
      .setPath(‘images/Background/‘)
      .load([‘px.jpg‘, ‘nx.jpg‘, ‘py.jpg‘, ‘ny.jpg‘, ‘pz.jpg‘, ‘nz.jpg‘]);
    //添加水珠
    var geometry = new THREE.SphereBufferGeometry(100, 32, 16);
    var material = new THREE.MeshBasicMaterial({ color: 0xffffff, envMap: this.scene.background, refractionRatio: 0.95 });
    material.envMap.mapping = THREE.CubeRefractionMapping;
    this.spheres = [];
    for (var i = 0; i < 500; i++) {
      var mesh = new THREE.Mesh(geometry, material);
      mesh.position.x = Math.random() * 1000 - 500;
      mesh.position.y = Math.random() * 1000 - 500;
      mesh.position.z = Math.random() * 1000 - 500;
      mesh.scale.x = mesh.scale.y = mesh.scale.z = Math.random() * 3 + 1;
      this.scene.add(mesh);
      this.spheres.push(mesh);
    }
    window.requestAnimationFrame(this.loop.bind(this), canvas);
  }
  loop() {
    this.MoveWaterDrops();
    this.renderer.render(this.scene, this.camera);
    window.requestAnimationFrame(this.loop.bind(this), canvas);
  }
  //水珠移动
  MoveWaterDrops() {
    var timer = 0.0001 * Date.now();
    for (var i = 0, il = this.spheres.length; i < il; i++) {
      var sphere = this.spheres[i];
      sphere.position.x = 8000 * Math.cos(timer + i);
      sphere.position.y = 8000 * Math.sin(timer + i * 1.1);
    }
  }
} 

效果展示

原文地址:https://www.cnblogs.com/lee-li/p/9219668.html

时间: 2024-11-07 04:22:46

[微信小游戏+Three.JS]给场景添加反射材质,实现3D水珠移动效果的相关文章

微信小游戏 three.js jsonloader request:fail invalid url

微信小游戏中,用 THREE.JSONLoader 直接加载本地的 json 文件,报错.估计是跨域访问的问题 解决:把 json 文件放到服务器上,通过 url 来访问. 临时测试的话,在本地起一个 http 服务器 python -m SimpleHTTPServer 8080,然后通过 http://localhost:8080/xx/yy.json 访问,localhost 改为本机 ip 方便在手机上预览 原文地址:https://www.cnblogs.com/hangj/p/105

CocosCreator如何制作OA信用盘源码下载微信小游戏

CocosCreator在1.8版本开始,就支持一键发布微信小程序,下面是详细的发布步骤:1.在微信公众平台下载微信开发者工具;OA信用盘源码下载 地址:haozi-bbs.com 2.打开cocoscreator,选择Cocos Creator --> 偏好设置 --> 原生开发环境,配置WechatGame程序路径,点击保存并关闭. 3.在cocoscreator中点击项目-->构建发布看到下面的界面:游戏名称根据需要自己写入,发布平台悬着Wechat Game,appid可以暂时不

使用Laya引擎开发微信小游戏(上)

本文由云+社区发表 使用一个简单的游戏开发示例,由浅入深,介绍了如何用Laya引擎开发微信小游戏. 作者:马晓东,腾讯前端高级工程师. 微信小游戏的推出也快一年时间了,在IEG的游戏运营活动中,也出现了越来越多的以小游戏作为载体运营的活动类型,比如游戏预约,抢先试完等等,都收到了非常良好的效果. 在支持微信小游戏的游戏引擎中,Cocos,Egret,Laya都对小游戏的开发提供了很多强大的支持.前段时间正好抽空研究了一下这块的内容,现做一个总结,针对如何使用Laya引擎开发微信小游戏给大家做一下

基于Laya游戏引擎实现微信小游戏排行榜

我们都知道,微信小游戏和小程序目前风头十足,很多公司都逐渐增加了相关业务线来迅速推广自己的产品和抢占用户群.说到微信小游戏,就不得不提到排行榜这个功能,就目前游戏行业,似乎都离不开排行榜这个重要功能,用户很大一部分留存都是依仗这个看似不起眼的模块.那么,微信小游戏中具体该如何借助laya引擎实现排行榜这个功能呢?我们先来看一下最终的效果图: 按照微信官方的说法,如果我们要使用微信官方提供的好友关系链的数据,我们就不能直接在项目中绘制排行榜,我们需要借助于开放域来绘制排行榜: ? 如果想要展示通过

【转】Fundebug上线微信小游戏错误监控!支持自动截屏!

摘要: Fundebug竭诚为你的小游戏保驾护航. 想必大家都玩过"跳一跳"吧?刷排行榜的感觉是不是很好啊!还有"知乎答题王"呢,在智力上碾压老铁简直太棒了! 自带社交属性的小游戏很火,是微信帝国的另一座金矿! 为什么监控小游戏? 理论上来讲,BUG是无法避免的,实时监控阔以帮助开发者第一时间发现BUG,及时修复BUG,将BUG的影响降到最低. 开发者通常是比较自信的,他们坚持我写的代码当然没问题.然而,再拷问一下自己: 我的代码真的100%没有问题吗? 我做了完整

解决CocosCreator 在微信小游戏中使用Socket.io 报错的问题

最近微信小游戏比较火,准备试着做一个Demo来玩一玩,网络通信这块就选择了socket.io,打包成微信工程,编译出现如下错误: 对于我这种菜逼(就目前的情况,自我感觉是挺菜的)来说,第一个想到的事情就是百度,百度不行,然后就谷歌,发现在cocos中文社区里面有很多人提到了这个问题,但是没有人回答,谷歌发现有大神重写了一套能够在微信小程序中使用的socket.io.emma..这些对于我来说,感觉太麻烦了,百度,谷歌无果,在回过头来仔细看看这个错误.提示io没有找到,竟然io没有找到,那我就给他

【微信小游戏】排行榜实战版

一.前提 微信小游戏主打社交玩法,为了丰富社交玩法我们肯定会用到关系链数据来做好友排行帮,群排行榜等功能.本篇主要介绍Cocos Creator中排行榜的实现,上一篇微信小游戏排行版概念篇. 二.准备 工具:cocos creator 版本:v1.9.1 语言:JavaScript 介绍: 1)cocos creator v1.9.1 版本,构建发布中增加了子域的概念,这里的子域对应的就是小游戏中的开放数据域.如图1 2)子域代码目录:指的就是小游戏game.json中subContext的路径

【开发记录】微信小游戏开发入门——俄罗斯方块

叨叨 我在前一阵子,打算做一个微信小游戏,当然是单机的,只是为了了解小游戏开发的过程,最终选择了俄罗斯方块这一经典小游戏作为demo,源代码已托管值github,当然,这个游戏demo对用不并不友好,但是已经可以让我入门小程序开发了XD. demo地址:https://github.com/nbclw/Laya_Brick 准备 在任何开发前都需要对要开发的东西有一定的了解.准备: 小游戏原理:微信小游戏是属于H5游戏的一种吧,我是这样理解的:在H5中,有一个叫Canvas(画布)的存在,与电脑

微信小游戏入门与实战 引爆朋友圈

第1章 准备工作(需要ES5,ES6基础)学员作品演示:https://pan.baidu.com/s/1gEMWzujg72soj0cEUOtJ2A 密码:uy2n,本章首先介绍课程目标,学习收获等,然后通过与APP.小程序的对比,让大家知道什么是微信小游戏以及微信小游戏前景如何,有哪些特点,然后带大家搭建微信小游戏的开发环境和调试环境,之后会对微信小游戏开发前注意事项与准备工作进行讲解,目...1-1 课程导学1-2 小游戏官方开发工具快速体验1-3 小游戏开发测试环境搭建和工具链使用1-4