- Home /
Question by
Reverend-Speed · Sep 14, 2017 at 11:01 AM ·
shaderoffsetskinnedmeshrenderersharedmeshuv2
How can I move a second set of UVs on an instance of a Skinned Mesh Renderer (not the sharedMesh)?
Hey folks,
I have a shader I'm using to give my characters different skin tones, but in order to switch skin tones I need to move the second set of UVs over part of the texture.
The following code was my first attempt...
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UV2Offset : MonoBehaviour {
public SkinnedMeshRenderer skinMeshRend;
public float xOffset = 0.0f;
public float yOffset = 0.0f;
private void Awake()
{
skinMeshRend = GetComponent<SkinnedMeshRenderer>();
}
// Update is called once per frame
void Update () {
Vector2[] uvs = new Vector2[skinMeshRend.sharedMesh.vertices.Length];
uvs = skinMeshRend.sharedMesh.uv2;
for (int i = 0; i < uvs.Length; i++)
{
uvs[i] = new Vector2(uvs[i].x + xOffset, uvs[i].y + yOffset);
}
skinMeshRend.sharedMesh.uv = uvs;
}
}
Unfortunately this wrecks my original mesh UVs! Can anybody tell me how to move the second set of UVs on the Skinned Mesh Renderer, without affecting the sharedMesh? I'd like to be able to have multiple characters using this material, but with different skin colours (therefore different placement of UV2s).
This has been bugging me for ages. If somebody can help (or suggest a different solution for skin tone), I'd appreciate it!
--Rev
Comment