TGALoader 正在加载垂直轴上镜像的图像
TGALoader is loading image mirrored in vertical axis
使用 Targa 图像作为纹理加载带有 .mtl 材质的 .obj 模型,图像将镜像加载。在下图中可以注意到,左边是.tga的,右边是.png的。
在图像编辑器中打开两个图像,它们显示为相同。而且,只要正确加载了.png图像,问题就出在我用于.tga的加载器中。
我正在使用 TGALoader 类来加载纹理。该问题似乎与来自TGALoader.js的函数getTgaRGBA中的以下代码有关:
TGA_ORIGIN_MASK = 0x30,
TGA_ORIGIN_SHIFT = 0x04,
TGA_ORIGIN_BL = 0x00,
TGA_ORIGIN_BR = 0x01,
TGA_ORIGIN_UL = 0x02,
TGA_ORIGIN_UR = 0x03;
function getTgaRGBA( width, height, image, palette ) {
var x_start,
y_start,
x_step,
y_step,
x_end,
y_end,
data = new Uint8Array( width * height * 4 );
//switch ( 0x02 ) {
switch ( ( header.flags & TGA_ORIGIN_MASK ) >> TGA_ORIGIN_SHIFT ) {
default:
case TGA_ORIGIN_UL:
x_start = 0;
x_step = 1;
x_end = width;
y_start = 0;
y_step = 1;
y_end = height;
break;
case TGA_ORIGIN_BL:
x_start = 0;
x_step = 1;
x_end = width;
y_start = height - 1;
y_step = - 1;
y_end = - 1;
break;
case TGA_ORIGIN_UR:
x_start = width - 1;
x_step = - 1;
x_end = - 1;
y_start = 0;
y_step = 1;
y_end = height;
break;
case TGA_ORIGIN_BR:
x_start = width - 1;
x_step = - 1;
x_end = - 1;
y_start = height - 1;
y_step = - 1;
y_end = - 1;
break;
}
如果切换的结果0x02,则加载映像将进行校正,而不会进行镜像。我用不同的.tga图像进行了测试,所有这些图像都产生了相同的镜像。
我不太明白开关的参数是什么意思...你们能帮我弄清楚吗,我该如何解决我的问题?
您的纹理被翻转。使用此模式:
var loader = new THREE.TGALoader();
var texture = loader.load( 'myTexture.tga' );
texture.flipY = true;
三.js R.74
相关文章:
- IE中的CSS翻转动画:翻转的一面显示镜像内容
- Markdown模式代码镜像正在创建
- 更改代码镜像中TextArea的高度和宽度
- 如何缩放像图像一样的元素
- IE中的CSS翻转动画:翻转的一面显示镜像内容
- 什么CSS/JS技巧驱动镜像反转http://com.google愚人节页面
- jquery使2组单选按钮相互镜像
- Nodejs使用httpdispatcher提供静态镜像
- HTML5相机缓冲和延迟(延迟镜像)
- jQuery插件在本地主机上运行良好,但在web服务器上却与bg镜像混淆
- 镜像滚动效果打开.在两个容器之间单击
- 代码镜像批量更改
- 如何在代码镜像编辑器中设置隐藏值
- Selenium-使用换行符将文件写入代码镜像
- 默认情况下在代码镜像中启动全屏
- 如何在代码镜像编辑器中设置不同的维度
- TGALoader 正在加载垂直轴上镜像的图像
- 代码镜像&html2canvas:将iFrame另存为图像
- HTML画布:如何绘制翻转/镜像图像
- 使用纯Javascript/JQuery镜像图像