本机上使用Three.js载入纹理

怎样载入纹理

// 首先, 创建一个纹理

var mapUrl = "../images/molumen_small_funny_angry_monster.jpg";

var map = THREE.ImageUtils.loadTexture(mapUrl);

//然后, 创建phong 材质来显示光影效果,把纹理传给该材质

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

// 创建几何对象

var geometry = new THREE.CubeGeometry(1, 1, 1);

// 把几何体对象和纹理材质整合到一个面片集合中

cube = new THREE.Mesh(geometry, material);

參考WebGL Up and Running by Tony Parisi

怎样使用本地文件

WebGL默认情况下不同意使用本机上的纹理、模型文件的。

假设你仅仅是在使用WebGL绘制几何图形什么的,没有纹理载入直接点击html文件以文件协议訪问就可以。地址栏显示的格式如右:file:///C:/dir/to/example.html

载入外部文件

若想载入外部模型和纹理文件,由于同源策略的安全限制从文件系统载入文件会由于安全异常而失败。

只是有两个办法能够解决:

1、减少浏览器的安全级别

2、在本机上建立一个server。把外部文件放到该server作为网络文件訪问。

If you use option 1, be aware that you may open yourself to some vulnerabilities if using the same browser for a regular web surfing. You may want to create a separate browser profile / shortcut used just for local development to be safe.

Change local files security policy

Safari

Enable the develop menu using the preferences panel, under Advanced -> "Show develop menu in menu bar"

Then from the safari "Develop" menu, select "Disable local file restrictions", it is also worth noting safari has some odd behaviour with caches, so it is advisable to use the "Disable caches" option in the same menu; if you are editing & debugging using safari.

Chrome

Close all running chrome instances first. Then start Chrome executable with a command line flag:

chrome --allow-file-access-from-files

On Windows, the easiest is probably to create a special shortcut which has added flag (right-click on shortcut -> properties -> target).

Firefox

Go to about:config

Find security.fileuri.strict_origin_policy parameter

Set it to false

Run local server

The simplest probably is to use Python‘s built-in http server.

If you have Python installed, it should be enough to run this from a command line:

# Python 2.x

python -m SimpleHTTPServer

# Python 3.x

python -m http.server

This will serve files from the current directory at localhost under port 8000:

http://localhost:8000/

If you have Ruby installed, you can get the same result running this instead:

ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd); trap(‘INT‘) { s.shutdown }; s.start"

PHP also has a built-in web server, starting with php 5.4.0:

php -S localhost:8000

Node.js has a simple HTTP server package. To install:

npm install http-server -g

To run:

http-server .

Other simple alternatives are discussed here on Stack Overflow.

Of course, you can use any other regular full-fledged web server like Apache or nginx.

Example with lighttpd, which is a very lightweight general purpose webserver (on MAC OSX):

Install it via homebrew brew install lighttpd

Create a configuration file called lighttpd.conf in the directory where you want to run your webserver. There is a sample in this page.

In the conf file, change the server.document-root with the directory you want to serve

Start it with lighttpd -f lighttpd.conf

Navigate to http://localhost:3000/ and it will serve static files from the directory you chose.

时间: 2024-12-18 10:41:17

本机上使用Three.js载入纹理的相关文章

本机上使用Three.js加载纹理

如何加载纹理 // 首先, 创建一个纹理 var mapUrl = "../images/molumen_small_funny_angry_monster.jpg"; var map = THREE.ImageUtils.loadTexture(mapUrl); //然后, 创建phong 材质来显示光影效果,把纹理传给该材质 var material = new THREE.MeshPhongMaterial({ map: map }); // 创建几何对象 var geometr

layer.js载入失效问题

<script type="text/javascript" src="lib/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript" src="lib/layer/2.4/layer.js"></script> 如上所示,载入layer时,jquery.min.js务必在layer.js的上面,否

js 载入动画 递归依次显示

去年面试过一家做网站的 公司,看了一下他们的案例,看懂一个蛮有意思的 ,一个房地产的官网,是用flash做的.感觉不错. 于是,闲暇之际,简单的jquery 模仿做了一下.下面是我的效果图.脚本也没啥优化,流畅度也没有flash流畅.但是重要的是看到这个flash,想到 如何实现它效果的思路,非常适合新手. 观察上诉,首先左侧是个载入动画, $('.left').find('ul').delay(90).animate({left:0},700,'easeOutSine',function(){

Java程序员之JS(一) 之 JQuery.ajax

背景:紧着现在项目的需要,先从JQuery.ajax出发,主要需求是通过 js 调用Java 代码,从而适应现在的项目. 先从几个概念开始讲解: 一. 什么是Deferred  Deferred 对象是由.Deferred构造的, .Deferred被实现为简单工厂模式.它是用来解决JS中的异步编程,遵循 Common Promise/A规范,实现此规范的还有when.js 和 dojo. Deferred 对象在 JQuery 1.5被引入,用来解决 Ajax 异步优化问题,正是由于 Defe

webpack的最简单应用,只使用js与css的打包

cmd跳转到项目的文件夹,安装webpack npm install --save-dev webpack 接着需要packjson.sj文件,全部enter掉就好了,默认值就行了 npm init 接着在项目文件夹接着安装,css-loader 和 style-loader处理样式表 npm install --save-dev style-loader css-loader 在项目文件夹新建webpack.config.js,我的内容如下 var webpack = require('web

android openGL ES2 一切从绘制纹理开始

纹理,在openGL中,可以理解为加载到显卡显存中的图片.Android设备在2.2开始支持openGL ES2.0,从前都是ES1.0 和 ES1.1的版本.简单来说,openGL ES是为了嵌入设备进行功能剪裁后的openGL版本.ES2.0是和1.x版本不兼容的,区别和兼容性参见android 官方文档. 首先,android使用openGL提供了特殊的view作为基础叫做GLSurfaceView.我们的view需要继承GLSurfaceView.如下简单示例: public class

用OpenGL进行立方体表面纹理贴图

一.目的: 掌握OpenGL中纹理对象的创建.绑定与使用方法. 二.简单介绍: 1,连接静态库 #pragma comment(lib, "glut32.lib") #pragma comment(lib, "glaux.lib") 2,载入位图图像到内存(这是固定用法) AUX_RGBImageRec *LoadBMP(CHAR *Filename) { FILE *File = NULL; // 文件句柄 if (!Filename) // 确保文件名已提供 {

三个月-见识菜鸟的每天的成长(js正則表達式&amp;amp;&amp;amp;phpmail的收发)

今天写了一段JS验证.就是涉及一个数据的合法性验证. 就是核心就是正則表達式.其它都是细节的东西,可是细节的东西非常重要. 今天犯了一个特么2B的错误,在js的function函数里面,alert字符的时候.用的双引號.导致程序跑步起来出错. 整整困扰了自己一个上午.才发现原来是这个小细节没有注意.总而言之.还是自己实力不济.得提高. 以下普及一下正則表達式跟JS基本的语法规则. 首先正則表達式,依据2/8定理,百分之二十的表达式是在百分之八十中用到的,其它的不用管. 略微了解一下即可. 最重要

折腾一两天,终于学会使用grunt压缩合并混淆JS脚本,小激动,特意记录一下+spm一点意外收获

很长时间没有更新博客了,实在是太忙啦...0.0 ,以下的东西纯粹是记录,不是我原创,放到收藏夹还担心不够,这个以后常用,想来想去,还是放到这里吧,,丢不了..最后一句废话,网上搜集也好原创也罢,能解决问题不糊弄人才是真道理! 反正我的问题解决啦!!!哈哈哈!! 安装grunt 原文:www.bluesdream.com/blog/Windows-installs-the-grunt-and-instructions.html 怕这个网址打不开,记录下: 安装Grunt:如果你之前安装过老的0.