如何更改模型纹理像素颜色 (Godot)

问题描述

我对 Godot 很陌生,但正在寻找如何更改模型纹理上的像素的手。如果场景中有一个模型,并且从屏幕到世界点的光线投射然后在给定的纹理位置击中模型,您将如何将像素点的实际纹理更改为红色?我在单声道工作,所以 C# 其他示例很好。从长远来看,我希望使用修改后的颜色值导出此纹理。

我可以提供一些示例,这样我就可以清楚地了解我要实现的目标。

Unity3D 代码

         private void FireRay() {
                if (Input.GetButtonDown(controllerInput.FireButtonName)) {
                    Vector3 direction = requiredComponents.RaycastPosition.position - transform.position;
     
                    RaycastHit raycastHit;
     
                    if (Physics.Raycast(requiredComponents.RaycastPosition.position,direction,out raycastHit)) {
                        if (raycastHit.collider.tag != "Billboard") {
                            return;
                        }
     
                        Renderer renderer = raycastHit.collider.GetComponent<MeshRenderer>();
                        Texture2D texture2D = renderer.material.mainTexture as Texture2D;
                        Vector2 pCoord = raycastHit.textureCoord;
                        pCoord.x *= texture2D.width;
                        pCoord.y *= texture2D.height;
     
                        Vector2 tiling = renderer.material.mainTextureScale;
                        Color color = texture2D.GetPixel(Mathf.FloorToInt(pCoord.x * tiling.x),Mathf.FloorToInt(pCoord.y * tiling.y));
     
                        Debug.Log("Picked color : " + color);
                        requiredComponents.CollisionEvents.PixelColor = color;
     
                        if (requiredComponents.CollisionEvents.OnRayHitBillboard != null) {
                            requiredComponents.CollisionEvents.OnRayHitBillboard.Invoke();
                        }
                    }
                }
            }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)