- Home /
Trying to access a texture's pixel coords.
I'm attempting to access a texture's pixel coord's to pull out what color is at that specific coords. Right now I am firing a raycast at an specific object (in this case a laptop) pulling off the objects textureCoords, then looking those coords up on a stored texture "laptopstatic_handling" in the Resources folder. I am getting a Unity error that says:
UnityException: Texture 'laptopstatic_handling' is not readable, the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings. RayCastController.Update () (at Assets/RayCastController.cs:35)
Not quite sure what that means. Here is the sample of code
// Use this for initialization void Start () { tex = (Texture2D)Resources.Load("laptopstatic_handling"); }
// Update is called once per frame void Update () {
RaycastHit ray = new RaycastHit();
if(!Physics.Raycast(UnityEngine.Camera.current.ScreenPointToRay(Input.mousePosition),out ray)){
return;
}
name = ray.collider.gameObject.name;
Renderer renderer = ray.collider.renderer;
MeshCollider meshCollider = (MeshCollider)ray.collider ;
//Check to see the collider has a renderer and texture
if (renderer == null || renderer.sharedMaterial == null ||
renderer.sharedMaterial.mainTexture == null || meshCollider == null){
return;
}
Debug.Log( tex.GetPixel( (int)ray.textureCoord.x,(int)ray.textureCoord.y).ToString());
Answer by Wolfram · Aug 24, 2010 at 03:41 PM
Well, why not simply do what the error message suggests: go to the texture "laptopstatic_handling" in the Project tab, then in the Inspector enable "IsReadable" in its import settings (NOTE: you need to change the Texture Type to "Advanced"). From the GetPixel() docs:
"The texture must have the Is Readable flag set in the import settings, otherwise this function will fail."
I completely skipped over that sentence. Thanks, works now.
Uhm, I'm getting crazy here. Using Unity 3.5, I can't find anywhere the isReadable checkbox in the textures Inspector... What am I doing wrong?
You can find this Checkbox by choosing "Advanced" in the "Texture Type comboBox.
It is called "Read/Write Enabled"
If you add the steps to your answer to change the mesh + change the material to "Advanced" and enable read/write I will be very happy to accept your answer.
Thanks so much!
Your answer
Follow this Question
Related Questions
Get pixel from Rotated Texture2D 1 Answer
How can i avoid mouse clicking on alpha areas in my GUITexture? 1 Answer
How can I tell how much grahics memory is available? 1 Answer
Parenting Bullet Holes? 1 Answer
RayCast Hit 2 Answers