在前六章模型绘制的基础上,加一些几何算法,很容易制作出不同样式的模型,例如下图中的几种模型:直梯、曲梯、各种屋顶等等。
不过最终章主要想讲一下柔体的绘制:所谓柔体,其实就是物体在受力的作用时,会产生形变,看起来比较柔软。而产生形变的过程则是柔体的每个受力点,在每个时刻随着力的作用,发生形状、位置上的改变,从而整体看起来具备柔体效果。
简单点讲:把柔体看做若干个点组成的面,每个点受力发生改变,物体也因此改变。
这里做个简单的demo,做一块布料,实现思路:
1.做一根上端固定的弹力线,线有5个节点彼此相连:
2.做五条这样的线连成一片布料:
关键代码:
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using MeshMaker.Utility;
- using System;
-
- [Serializable]
- public class ClothNode : MonoBehaviour
- {
- public ClothNode lastNode;//前节点
-
- public bool isStatic = true;
- public float hook = 10;//虎克系数
- public float g = 10;//中立
-
- private float lastOraginDis;//前节点初始距离
-
- private void Start()
- {
- if(lastNode != null) lastOraginDis = Vector3.Distance(transform.position, lastNode.transform.position);
- }
-
- public void SetLast(ClothNode node)
- {
- lastNode = node;
- }
-
- // Update is called once per frame
- public void Update()
- {
- if(!isStatic) AddForce();
- }
-
- public void SetStatic(bool s) {
- isStatic = s;
- }
-
- public void SetInfo(bool isStatic,float hook, float g) {
- this.isStatic = isStatic;
- this.hook = hook;
- this.g = g;
- }
-
- public void AddForce() {
- Vector3 delta = Vector3.zero;
-
- Vector3 detaG = Vector3.zero;
- detaG = g * Vector3.up;
-
- delta -= detaG;
-
- if (lastNode != null)
- {
- var dir = (lastNode.transform.position - transform.position).normalized;
- float curDis = Vector3.Distance(transform.position, lastNode.transform.position);
- float rate = (curDis / lastOraginDis) - 1;
-
- Vector3 detaA = Vector3.zero;
-
- if (rate > 0)
- {
- float power = hook * rate;//弹力
- float a = power;//加速度
- detaA = a * dir;
- }
-
- delta += detaA ;
- }
-
- transform.position += delta * Time.deltaTime;
- }
-
- private void OnDrawGizmos()
- {
- Gizmos.color = new Color(0, 1, 1, 1);
-
- Gizmos.DrawCube(transform.position, Vector3.one * 0.1f);
-
- }
- }
ClothNode是节点,isStatic为true的点是静态点,不受力的作用,在Start()记录初始距离,后面根据距离变化来计算,效果:
unity布料演示
这种斗篷式布料是柔体中比较简单的一种,各位大佬可以试试添加不同的作用力实现不同的柔体效果。
后序:本章节(Unity模型制作)就此结束,感谢支持!
源码资源:MeshMaker:Unity模型绘制工具-Unity3D文档类资源-CSDN下载