Three.js立方体透明纹理显示边
我试图用three.js在游戏演示中创建世界的极限,因此我创建了两个立方体,每个立方体显示一个“透明森林纹理”,模拟世界极限 我最初的问题是纹理显示在立方体的所有面上,但我希望它只显示在其中4个面上 [更新:我已设法使立方体顶面中的纹理不可见,但我仍然可以看到天空中有某种边缘(我不确定它是什么…)。现在的问题是如何隐藏立方体边缘?] 近距离观察: 如果你访问,你将能够看到它的行动 我的代码是[更新]:Three.js立方体透明纹理显示边,three.js,transparency,cube,texture-mapping,invisible,Three.js,Transparency,Cube,Texture Mapping,Invisible,我试图用three.js在游戏演示中创建世界的极限,因此我创建了两个立方体,每个立方体显示一个“透明森林纹理”,模拟世界极限 我最初的问题是纹理显示在立方体的所有面上,但我希望它只显示在其中4个面上 [更新:我已设法使立方体顶面中的纹理不可见,但我仍然可以看到天空中有某种边缘(我不确定它是什么…)。现在的问题是如何隐藏立方体边缘?] 近距离观察: 如果你访问,你将能够看到它的行动 我的代码是[更新]: function createWall(texture,distanceFromM
function createWall(texture,distanceFromMapLimit,wallsHeight,positiony){
//texture
var backgroundInteriorTexture = THREE.ImageUtils.loadTexture(texture,distanceFromMapLimit);
backgroundInteriorTexture.wrapS = backgroundInteriorTexture.wrapT = THREE.RepeatWrapping;
backgroundInteriorTexture.repeat.set( 10, 1 ); //repeat texture 10 times per face
backgroundInteriorTexture.needsUpdate = true;
// materials (for each face of the cube we will add one material)
var backgroundInteriorMaterials = [];
for ( var i = 0; i < 6; i ++ ) {
if((i == 0) || (i == 1) || (i == 4) || (i == 5)) // side faces
{
console.log(i,'visible')
backgroundInteriorMaterials.push(
new THREE.MeshBasicMaterial(
{
map: backgroundInteriorTexture,
transparent: true,
opacity: 1, //visible
side: THREE.BackSide
}
));
}
else //top and bottom faces
{
console.log(i,'NOT visible')
backgroundInteriorMaterials.push(
new THREE.MeshBasicMaterial(
{
map: backgroundInteriorTexture,
transparent: true,
opacity: 0, //not visible
side: THREE.BackSide
}
));
}
}
//geometry
var backgroundInteriorGeometry = new THREE.CubeGeometry(
world.worldWidth + distanceFromMapLimit,
wallsHeight,
world.worldDepth + distanceFromMapLimit
);
//mesh
var backgroundInteriorMesh = new THREE.Mesh(
backgroundInteriorGeometry,
new THREE.MeshFaceMaterial(backgroundInteriorMaterials)
);
backgroundInteriorMesh.position.y = positiony;
game.scene.add(backgroundInteriorMesh);
}
function createBackground(){
//INTERIOR
var wallsHeight = 4056;
var positiony = 1750;
createWall("Back_01.png", 0, wallsHeight, positiony); //just in ground limits
//EXTERIOR
createWall("Back_02.png", 5000, wallsHeight, positiony); //5000 away from ground limits
}
函数createWall(纹理、距离贴图限制、墙高、位置Y){
//质地
var backgroundInteriorTexture=THREE.ImageUtils.loadTexture(纹理,距离MapLimit);
backgroundInteriorTexture.wrapT=backgroundInteriorTexture.wrapT=THREE.RepeatWrapping;
backgroundInteriorTexture.repeat.set(10,1);//每个人脸重复纹理10次
backgroundInteriorTexture.needsUpdate=true;
//材质(对于立方体的每个面,我们将添加一种材质)
var backgroundInteriorMaterials=[];
对于(变量i=0;i<6;i++){
如果((i==0)| |(i==1)| |(i==4)| |(i==5))//侧面
{
console.log(i,'visible')
背景内饰材料(
新的三网格基本材料(
{
地图:背景内部纹理,
透明:是的,
不透明度:1,//可见
侧面:三。背面
}
));
}
else//顶面和底面
{
console.log(i,“不可见”)
背景内饰材料(
新的三网格基本材料(
{
地图:背景内部纹理,
透明:是的,
不透明度:0,//不可见
侧面:三。背面
}
));
}
}
//几何学
var backgroundInteriorGeometry=新的三立方测量法(
world.worldWidth+distanceFromMapLimit,
wallsHeight,
world.worldDepth+distanceFromMapLimit
);
//网孔
var backgroundInteriorMesh=新的三个网格(
背景内部几何,
新三.网面材料(背景内饰材料)
);
backgroundInteriorMesh.position.y=positiony;
游戏。场景。添加(backgroundInteriorMesh);
}
函数createBackground(){
//内部
var wallsHeight=4056;
变量Y=1750;
createWall(“Back_01.png”,0,wallsHeight,positiony);//仅在地面范围内
//外表
createWall(“Back_02.png”,5000,wallsHeight,positiony);//5000远离地面限制
}
谢谢:)因为我在编辑之前和之后都读过这个问题,所以现在没有意义了。这是一个标题错误的完全不同的问题。你的问题是什么?对不起,伙计们,我忘了更新标题,现在的问题是如何隐藏立方体边缘?谢谢你的帮助