问题描述
我对 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 (将#修改为@)