List<int> repeatList = new List<int>();
bool judgeRepeat(int index){
for(int i=0;i<repeatList.Count;i++){
if(index == repeatList[i] ){
return true;
}
}
return false;
}
int getRepeatlenght(int index){
int repeatcount = 0;
for(int i=0;i<repeatList.Count;i++){
if(index >= repeatList[i] ){
repeatcount++;
}
}
return repeatcount;
}
public Mesh transMesh (InteractiveCloth InterCloth ,Mesh Cmesh)
{
Mesh Omesh = new Mesh();
Vector3[] verticals = InterCloth.vertices;
Vector3[] clothVerticals = InterCloth.vertices ;
Vector3[] srcVerticals = Cmesh.vertices ;
Vector3[] dstVerticals = Cmesh.vertices ;
Debug.LogWarning("clothVerticals.Length:"+clothVerticals.Length + "srcVerticals.Length:"+srcVerticals.Length);
Mesh N_Mesh = new Mesh();
N_Mesh = Cmesh;
bool isok = false;
for(int k=0;k<srcVerticals.Length;k++){
isok = false;
for(int l=k+1;l<srcVerticals.Length;l++){
if (Mathf.Approximately( srcVerticals[k].x, srcVerticals[l].x)&& Mathf.Approximately( srcVerticals[k].y, srcVerticals[l].y)&&Mathf.Approximately( srcVerticals[k].z, srcVerticals[l].z))
{
//if((k-RepeatSUM)<clothVerticals.Length){
if((k-getRepeatlenght(k))<clothVerticals.Length){
dstVerticals[k] = clothVerticals[k-getRepeatlenght(k)];
dstVerticals[l] = clothVerticals[k-getRepeatlenght(k)];
repeatList.Add(l);
RepeatSUM++;
isok = true;
Debug.Log("k:"+k+" l:"+l+" RepeatSUM:"+RepeatSUM);
// Debug.Log("kk1:"+k+" RepeatSUM:"+RepeatSUM);
break;
}else{
Debug.LogWarning("k1:"+k+" RepeatSUM:"+RepeatSUM);
}
}else{
// isok = true;
}
}
if(!isok && !judgeRepeat(k)){
// Debug.Log("kk:"+k+" RepeatSUM:"+RepeatSUM);
if(k-RepeatSUM < clothVerticals.Length){
dstVerticals[k] = clothVerticals[k-getRepeatlenght(k)];
}else{
Debug.LogError("k2:"+k+" RepeatSUM:"+RepeatSUM);
}
}
}
N_Mesh.vertices =dstVerticals;
N_Mesh.RecalculateBounds();
N_Mesh.RecalculateNormals();
return N_Mesh ;
}
顶点处理
最新推荐文章于 2025-03-18 11:30:00 发布