JSFIDDLE 助力 WebGL 功能探秘

太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的漂亮人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino。否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

下面演示样例能产生基本几何体的阴影投射,还有还有一份代码。是无法投射的,和本份能投射的代码。相差点儿相同,但确始终不得其法,需进一步核对,才干知道详细差异在哪里,哪些关键的部位起了阴影投射的作用。

还是静下心来,把每一行代码搞清楚吧,这才是捷径!

往往追求捷径的结果。就是盲人摸象,最后,越摸越离谱。连最初的无意识界都没有了。

所以佛祖告诫我们,要追求本真。象孩童一样。

事实上。就是去除妄念和推測。实事求是地按事情本来的面目去考虑问题,才不会被妄端推測出来的东西影响你的心绪,以至偏离正途,生出事端来。

在微信中流传的一条信息,大概意思是。仅仅要你想了,就会去不知不觉地做。做了就会产生效果。效果持续久了,就会变成习惯,习惯多了就形成性格,而性格决定着命运。

所以,要想改变,首先从想法開始改变。

这不算是唯心主义论吧,有时侯感觉,纯粹的唯物主义,往往让人们忽略和人的思维和潜意识对物质世界的改变。

而人类之所以差别于动物。最概本的就在于。人类是能够通过思维来改变其自身世界的状态,当然了。这状态。也是物质世界固有存在的多种选择之中的一个。但至少是能够选择的。

而我们假设不加以掌控的话,就会变成了随机选择,物质世界的状态有好有坏,随机选择的结果可想而知。全然是不好状态的可能也不是没有。

综上所述,人类的高级。就在于,能够通过思考指导行动,终于改变默认的选择项,而优先选择有利的选项。

http://jsfiddle.net/4Txgp/13/embedded

  1. var SCREEN_WIDTH = window.innerWidth - 100;
  2. var SCREEN_HEIGHT = window.innerHeight - 100;
  3.  
  4. var camera, scene;
  5. var canvasRenderer, webglRenderer;
  6.  
  7. var container, mesh, geometry, plane;
  8.  
  9. var windowHalfX = window.innerWidth / 2;
  10. var windowHalfY = window.innerHeight / 2;
  11.  
  12. init();
  13. animate();
  14.  
  15. function init() {
  16.  
  17. container = document.createElement('div');
  18. document.body.appendChild(container);
  19.  
  20. camera = new THREE.PerspectiveCamera(30, window.innerWidth / window.innerHeight, 1, 100000);
  21. camera.position.x = 1200;
  22. camera.position.y = 1000;
  23. camera.lookAt({
  24. x: 0,
  25. y: 0,
  26. z: 0
  27. });
  28.  
  29. scene = new THREE.Scene();
  30.  
  31. var groundMaterial = new THREE.MeshPhongMaterial({
  32. color: 0x6C6C6C
  33. });
  34. plane = new THREE.Mesh(new THREE.PlaneGeometry(500, 500), groundMaterial);
  35. plane.rotation.x = -Math.PI / 2;
  36. plane.receiveShadow = true;
  37.  
  38. scene.add(plane);
  39.  
  40. // LIGHTS
  41. scene.add(new THREE.AmbientLight(0x666666));
  42.  
  43. var light;
  44.  
  45. light = new THREE.DirectionalLight(0xdfebff, 1.75);
  46. light.position.set(300, 400, 50);
  47. light.position.multiplyScalar(1.3);
  48.  
  49. light.castShadow = true;
  50. light.shadowCameraVisible = true;
  51.  
  52. light.shadowMapWidth = 512;
  53. light.shadowMapHeight = 512;
  54.  
  55. var d = 200;
  56.  
  57. light.shadowCameraLeft = -d;
  58. light.shadowCameraRight = d;
  59. light.shadowCameraTop = d;
  60. light.shadowCameraBottom = -d;
  61.  
  62. light.shadowCameraFar = 1000;
  63. light.shadowDarkness = 0.2;
  64.  
  65. scene.add(light);
  66.  
  67. var boxgeometry = new THREE.CubeGeometry(100, 100, 100);
  68. var boxmaterial = new THREE.MeshLambertMaterial({
  69. color: 0x0aeedf
  70. });
  71. var cube = new THREE.Mesh(boxgeometry, boxmaterial);
  72. cube.castShadow = true;
  73. cube.position.x = 0;
  74. cube.position.y = 100;
  75. cube.position.z = 0;
  76.  
  77. scene.add(cube);
  78.  
  79. // RENDERER
  80. webglRenderer = new THREE.WebGLRenderer();
  81. webglRenderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
  82. webglRenderer.domElement.style.position = "relative";
  83. webglRenderer.shadowMapEnabled = true;
  84. webglRenderer.shadowMapSoft = true;
  85.  
  86. container.appendChild(webglRenderer.domElement);
  87. window.addEventListener('resize', onWindowResize, false);
  88. }
  89.  
  90. function onWindowResize() {
  91. windowHalfX = window.innerWidth / 2;
  92. windowHalfY = window.innerHeight / 2;
  93.  
  94. camera.aspect = window.innerWidth / window.innerHeight;
  95. camera.updateProjectionMatrix();
  96.  
  97. webglRenderer.setSize(window.innerWidth, window.innerHeight);
  98. }
  99.  
  100. function animate() {
  101. var timer = Date.now() * 0.0002;
  102. camera.position.x = Math.cos(timer) * 1000;
  103. camera.position.z = Math.sin(timer) * 1000;
  104. requestAnimationFrame(animate);
  105. render();
  106. }
  107.  
  108. function render() {
  109. camera.lookAt(scene.position);
  110. webglRenderer.render(scene, camera);
  111. }

JSFIDDLE 动力 Threejs 功能探秘的更多相关文章

  1. [Android] android studio 2.0即时运行功能探秘

    即时运行instant Run是android studio 2中,开发人员最关心的特性之一 在google发布studio 2.0之后,马上更新体验了一把,然而发现,并没快多少,说好的即时运行呢? ...

  2. 乐动力APP案例

    第一部分 调研, 评测 下载软件并使用起来,描述最简单直观的个人第一次上手体验. 这款软件的主界面功能还是比较完善,里面有多个关于运动相关的数据,还有一些推荐健身教程,记录功能也十分不错,其中最难理解 ...

  3. 代码演示神器——jsfiddle

    目录: 1. 介绍 2. jsfiddle的具体使用 3. 总结 1. 介绍 很多时候,我们需要在我们写的文章或博客中,即时显示出我们写的demo,能方便的解释出我们的思路.很久之前我也写过一篇文章, ...

  4. Spring Cloud 新一代Web框架微服务翘楚(一)

    序言 springcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合.基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易. 通过一些简单的注解,我们就可以快速的 ...

  5. WebGL和ThreeJs学习5--ThreeJS基本功能控件

      Threejs 2017年6月6日 15:06 Stats: new Stats();性能监视器,性能测试的方法,引入 Stats.js        http://www.hewebgl.com ...

  6. 动力节点Java培训告诉你Java线程的多功能用法

    现在的java开发可谓是八仙过海各显神通啊!遥想当下各种编程语言萎靡不振,而我Java开发异军突起,以狂风扫落叶之态,作为Java培训行业的黄埔军校,为了守护Java之未来,特意总结了一些不被人所熟知 ...

  7. 探秘IntelliJ IDEA 13测试版新功能——调试器显示本地变量

    IntelliJ IDEA在业界被公认为最好的Java开发平台之一,JetBrains公司将在12月正式发布IntelliJ IDEA 13版本. 现在,小编将和大家一起探秘密IntelliJ IDE ...

  8. 探秘小程序(10):分享功能+webview

    场景: 小程序页面用webview嵌入了h5页面,h5页面需要与小程序进行交互,h5页面内容不同,分享的链接也不一样 分享功能: 小程序的分享功能即用户点击小程序右上角,转发功能页面.可以指定分享卡片 ...

  9. 探秘Tomcat——启动篇

    tomcat作为一款web服务器本身很复杂,代码量也很大,但是模块化很强,最核心的模块还是连接器Connector和容器Container.具体请看下图: 从图中可以看出 a. 高亮的两块是Conne ...

随机推荐

  1. 如何安装一个优秀的BUG管理平台(转)

    前言 就BUG管理而言,国内的禅道做得很不错,而且持续有更新.我们来看看如何从头到尾安装禅道,各位要注意的是,不是文章深或者浅,而是文章如何在遇到问题的时候,从什么途径和用什么方法解决问题的.现在发觉 ...

  2. Html.Partial和Html. RenderPartial

    圣殿骑士-蓝剑行动 Html.Partial和Html. RenderPartial用法 Html.Partial和Html. RenderPartial用法 Html.partial和RenderP ...

  3. 《Javascript语言精粹》 读书笔记

    1 6种值被当做假:false.null.undefined.空字符串''.数字0.数字NaN,其他所有值都为真,包括"false" 2 typeof有6种值,分别是'number ...

  4. Android pm命令用法

    Sam综观有关PackageManager时,无意中发现Android 下提供一个pm命令,通常放在/system/bin/下. 这个命令与Package有关.且很有用.所以研究之. 0. Usage ...

  5. 完全背包 (DP)

    输入: n=3 (w,v)={(3,4),(4,5),(2,3)} W=7 输出: 10(0号物品选1个,2号物品选2个) 和01背包的区别是物品可以任意选择. 令dp[i+1][j]=从前i种物品中 ...

  6. C# 使用 Code Snippet 简化 Coding

    在开发的项目的时候,你是否经常遇到需要重复编写一些类似的代码,比如是否经常会使用 for.foreach ? 在编写这两个循环语句的时候,你是一个字符一个字符敲还是使用 Visual Studio 提 ...

  7. Visual Studio GitHub For Windows部署

    使用GitHub For Windows部署Visual Studio项目 因为最近同时再看很多技术方面的书,书上的例子有很多自己想亲自尝试一下,但是每次写例子都得创建一个新项目未免太麻烦,索性就整理 ...

  8. (c#)SKYPE API项目总结(一)

    原文:(c#)SKYPE API项目总结(一) 这个项目的需求:SKYPE软件文字聊天同步翻译,并将翻译后的内容会发送给对方,将对方发给自己的话翻译成自己语种.功能见图:               ...

  9. iis配置网址(主机名)

    一直以来,常常弄不成功关于网址的问题. 今天查了下资料 首先,找到你的文件:C:\Windows\System32\drivers\etc的hosts文件,直接用记事本打开 # Copyright ( ...

  10. Code Forces 414B 很不错的双手,以促进合规

    http://codeforces.com/problemset/problem/414/B 题目挺不错的.留个纪念,活动脑筋不错的题目 #include<iostream> #inclu ...