mix*_*mer 2 javascript three.js
我在使用pngs作为three.js中的纹理时遇到了一个奇怪的问题.png在可见和透明之间的区域有奇怪的边界.我已经尝试过使用alphatest值,但有时候图像会在1px线条很薄的区域中完全消失.有解决方案如何解决这个问题?
var explosionTexture = new THREE.ImageUtils.loadTexture( 'explosion.png' );
boomer = new TextureAnimator( explosionTexture, 4, 4, 16, 55 ); // texture, #horiz, #vert, #total, duration.
var explosionMaterial = new THREE.MeshBasicMaterial( { map: explosionTexture } );
explosionMaterial.transparent = true;
var cube2Geometry = new THREE.PlaneGeometry( 64, 64, 1, 1 );
cube2 = new THREE.Mesh( cube2Geometry, explosionMaterial );
cube2.position.set(100,26,0);
scene.add(cube2);
// renderer
//renderer = new THREE.WebGLRenderer( { antialias: false, premultipliedAlpha: true } );
renderer = new THREE.WebGLRenderer( { antialias: false } );
Run Code Online (Sandbox Code Playgroud)
Piu*_*der 10
试试这个:
explosionTexture.anisotropy = 0;
explosionTexture.magFilter = THREE.NearestFilter;
explosionTexture.minFilter = THREE.NearestFilter;
Run Code Online (Sandbox Code Playgroud)
此外,在构造渲染器时,不应使用反锯齿:
renderer = new THREE.WebGLRenderer({antialias: false});
Run Code Online (Sandbox Code Playgroud)
这是预览我的世界纹理包,效果很好:-)
使用材料混合,以下配置对我有用:
material.blending = THREE.CustomBlending
material.blendSrc = THREE.OneFactor
material.blendDst = THREE.OneMinusSrcAlphaFactor
Run Code Online (Sandbox Code Playgroud)
请参见以下示例:http : //threejs.org/examples/#webgl_materials_blending_custom
mix*_*mer -3
我是这样解决的:
var c2GVertices = cube2Geometry.vertices;
for (var i = 0; i < c2GVertices.length; i++) {
c2GVertices[i].x = c2GVertices[i].x - 0.5;
c2GVertices[i].y = c2GVertices[i].y - 0.5;
}
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法将所有顶点移动半个像素?