I’m using an image as a texture (.map) and I don’t want it to be multiplied by any color. I’m pretty sure this must be possible.
I asked Chat GPT, here’s its answer
To use an image as a texture for SpriteMaterial
in three.js
and ensure that the image’s colors are not altered by any additional coloring, you need to set the color
property of the SpriteMaterial
to white (the default color). This ensures that the color of the material doesn’t interfere with the image’s colors.
To make the SpriteMaterial
transparent, you should enable transparency and use an image with an alpha channel. Here’s how you can do it:
- Set the
color
to white (0xffffff
), which is the default and ensures no color multiplication. - Set the
map
property to your texture. - Set
transparent
totrue
. - Use an image with transparency (e.g., a PNG with an alpha channel) as the texture.
Here’s an example of how you might set up the SpriteMaterial
:
import * as THREE from 'three';
// Load the texture
const textureLoader = new THREE.TextureLoader();
const texture = textureLoader.load('path/to/your/image.png'); // Path to your image
// Create the sprite material
const spriteMaterial = new THREE.SpriteMaterial({
map: texture,
color: 0xffffff, // White color, ensuring no color multiplication
transparent: true
});
// Create the sprite
const sprite = new THREE.Sprite(spriteMaterial);
// Add the sprite to your scene, etc.
This will create a SpriteMaterial
that uses your image as its texture, displays the image’s original colors, and respects the image’s transparency.
Send here 36-obrpm.png in archive i will try something
Does adding this to the texture help?
texture.colorSpace = SRGBColorSpace
@anidivr Yes! This was it! Thanks!