THREE.JS圆形地板,看起来像阴影
THREE.JS Circle floor which will look like shadow
我需要创建一个渐变材质的圆网格,看起来像它的阴影,所以:黑色在中心,几乎是白色的边缘。
目前我可以创建一个圆圈并将它移动到它应该在的位置:
var floorGeometry = new THREE.CircleGeometry((Math.max(loadedObjectRotatedLength.x, loadedObjectRotatedLength.y)/2) + 15, 32);
var floorMaterial = new THREE.MeshBasicMaterial({color: 0xf0f0f0});
var floor = new THREE.Mesh(floorGeometry, floorMaterial);
floor.position = new THREE.Vector3((loadedObjectBoundingBox.min.x + loadedObjectBoundingBox.max.x)/2, (loadedObjectBoundingBox.min.y + loadedObjectBoundingBox.max.y)/2, loadedObjectBoundingBox.min.z);
任何人都可以帮助创建材料,将像径向梯度?:/
有两种方法。
1)加载渐变图像并将其应用于材料,如@GuyGood
评论中提到的代码将是这样的:
var circleGeometry = new THREE.CircleGeometry(200, 200, 32);
var texture = THREE.ImageUtils.loadTexture('image/shadow.png');// replace with appropriate URL
texture.anisotropy = renderer.getMaxAnisotropy();
var material = new THREE.MeshBasicMaterial({
map: texture,
color:0xFFFFFF
});
mesh = new THREE.Mesh(circleGeometry, material);
scene.add(mesh);
2)我在这里特别提到的另一种方法是,我们可以创建一个canvas
元素并在其上绘制任何东西(在您的情况下,它是一个带有渐变的圆圈,但它可以是任何东西),并创建它的纹理并应用于材料。
代码将是这样的
var circleGeometry = new THREE.CircleGeometry(100, 100, 100);
// create a texture on canvas and apply it on material
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var x = 150,
y = 75,
// Radii of the black glow.
innerRadius = 0,
outerRadius = 200,
// Radius of the entire circle.
radius = 200;
var gradient = ctx.createRadialGradient(x, y, innerRadius, x, y, outerRadius);
gradient.addColorStop(0, 'black');
gradient.addColorStop(1, 'white');
ctx.arc(x, y, radius, 0, 2 * Math.PI);
ctx.fillStyle = gradient;
ctx.fill();
var shadowTexture = new THREE.Texture(canvas);
shadowTexture.needsUpdate = true;
var material = new THREE.MeshBasicMaterial({
map: shadowTexture,
side: THREE.DoubleSide
});
mesh = new THREE.Mesh(circleGeometry, material);
scene.add(mesh);
相关文章:
- Steam Web API:I'我不知道该如何处理这个看起来像哈希的url来生成图像
- 如何使删除线看起来像x
- Twitter Bootstrap 2.1.0子菜单在Responsive上看起来很混乱
- 用javascript创建一个看起来正常分布的模式
- PHP函数的返回看起来如何对AJAX和PHP有效
- 如何使Codeschools棱角分明的一面看起来相似
- HTML/JavaScript拖动&Drop-是否可以使重影图像*NOT*看起来'冲洗掉'
- 未捕获的语法错误:意外的令牌非法?看起来不错
- NodeJS readline有时会打印回第一个输入行(但并不总是,看起来是随机的)
- 如何检查html是否看起来'空'
- 看起来第一个console.log是'It’不太对
- 使用 CSS 或 javascript/jQuery,我会使用哪种方法来使我的网站的导航栏看起来更 3d-ish
- 如何使用CSS或JQuery使整个网页看起来更小(就像Chrome的缩小功能一样)
- 是否可以使用 DIV 而不是 iFrame,以便内容看起来像在同一页面中
- "消息:应为')'"但事实并非如此;看起来不对
- 如何使用python将大量unicode隐藏为char,使其看起来像字符串
- 相同的css和HTML代码,但在两页上看起来不同
- 如何使许多jQuery ajax调用看起来很漂亮
- 我让一个图像看起来像一个可点击的按钮,但现在当我点击它时,它不会起到超链接的作用
- THREE.JS圆形地板,看起来像阴影