微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何更改模型纹理像素颜色 (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 举报,一经查实,本站将立刻删除。