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