顶点处理

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 ;
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值