我正在创建一个着色器来生成带阴影的地形.
我的出发点是克隆lambert着色器并使用ShaderMaterial最终使用我自己的脚本进行自定义.
标准方法效果很好:
var material = new MeshLambertMaterial({map:THREE.ImageUtils.loadTexture('images/texture.jpg')});
var mesh = new THREE.Mesh(geometry, material);
etc
Run Code Online (Sandbox Code Playgroud)
结果:

但是我想使用lambert材料作为基础并在其上工作,所以我尝试了这个:
var lambertShader = THREE.ShaderLib['lambert'];
var uniforms = THREE.UniformsUtils.clone(lambertShader.uniforms);
var texture = THREE.ImageUtils.loadTexture('images/texture.jpg');
uniforms['map'].texture = texture;
var material = new THREE.ShaderMaterial({
uniforms: uniforms,
vertexShader: lambertShader.vertexShader,
fragmentShader: lambertShader.fragmentShader,
lights:true,
fog: true
});
var mesh = new THREE.Mesh(geometry, material);
Run Code Online (Sandbox Code Playgroud)
结果如下:

看起来好像着色器没有考虑我添加的新纹理,但是当我记录制服时查看检查器时,地图对象具有正确的值.
我对三个很新,所以我可能会做一些根本错误的事情,如果有人能指出我在这里正确的方向,这将是伟大的.
如果有帮助,我也可以提供演示链接?
谢谢,威尔
编辑:
这是一些演示链接.
使用着色器材质进行演示:http://dev.thinkjam.com/experiments/threejs/terrain/terrain-shader-material.html
使用朗伯材料的演示:http://dev.thinkjam.com/experiments/threejs/terrain/terrain-lambert-material.html
我的问题有点难以解释!基本上,我正在设计一个HTML/CSS网站,我需要标识始终位于左上角.在Windows机器上,如果我从左侧调整大小,您可以从任何一侧调整浏览器的大小,我的徽标会被切断.
我正在寻找的一个很好的例子是Facebook,但是你调整屏幕大小,徽标将保持锁定在左上角.
我在这里有一个金发碧眼的时刻,还是有特定的方式来做这件事?
我试图以低聚风格生成一些地形,供参考,这种风格:

我的意思是每个三角形都是一个阴影.
当我尝试这样的东西时,阴影非常平滑.这是一个只有几个三角形的例子:
http://www.willdonohoe.com/stackoverflow-images/smooth-shading.png
我也试过添加阴影,但这也没有产生预期的效果.这是一个更多三角形添加阴影的镜头:
http://www.willdonohoe.com/stackoverflow-images/added-shadows.png
通过三个文档,材质类的着色属性听起来就像它可以做到的那样,但是THREE.FlatShading和THREE.NoShading似乎没有任何效果.
我需要使用一种特殊的技术来创造这种效果吗?你可以指出我的方向任何方向将非常感激.
你可以在这里找到我的第一个演示
非常感谢,
将
这是我一直希望解决的问题,虽然我永远找不到解决方法.我想我可能会遗漏一些东西,但我似乎找不到什么.
我试图从b2World中摧毁身体,我在各种教程中看到,当他们在调试绘图的情况下破坏box2d中的对象时,形状也会被破坏.出于某种原因,我这样做:
world.DestroyBody(_body)它似乎没有做任何事情.形状停留在屏幕上.
以前有人有这个问题吗?这让我很担心,因为玩游戏一段时间后,我想破坏的所有物体都会留在屏幕上,并且仍会记录真正落后于游戏的碰撞.
任何帮助将非常感激,
谢谢,
威尔
编辑:[已决议]谢谢你们,这非常有道理.
flash garbage-collection actionscript-3 box2d physics-engine