在前六章模型绘制的基础上,加一些几何算法,很容易制作出不同样式的模型,例如下图中的几种模型:直梯、曲梯、各种屋顶等等。

不过最终章主要想讲一下柔体的绘制:所谓柔体,其实就是物体在受力的作用时,会产生形变,看起来比较柔软。而产生形变的过程则是柔体的每个受力点,在每个时刻随着力的作用,发生形状、位置上的改变,从而整体看起来具备柔体效果。

简单点讲:把柔体看做若干个点组成的面,每个点受力发生改变,物体也因此改变。

这里做个简单的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 framepublic 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下载

unity模型制作(终章):柔体布料绘制相关推荐

  1. Unity模型制作导出规范

    Unity模型制作导出规范 一.模型制作流程 素材采集-模型制作(高低模)-展UV-贴图制作-场景整合-层级整理.命名.(展lightmapUV)-(动画烘焙)-场景调整导出 二.模型制作规范 1. ...

  2. unity模型制作规范

    https://blog.csdn.net/OnafioO/article/details/40826179 1. 单位,比例统一 在建模型前先设置好单位,在同一场景中会用到的模型的单位设置必须一样, ...

  3. unity模型制作(二):绘制一个铰链

    (不重要的前言:该博文为系列博文,每一篇有前后文关系,例如基类.组件的集成,如果发现有陌生组件和基类,请查看前面文章,本系列文章单纯应用unity的mesh来绘制模型,并未使用任何三方插件,文章内容. ...

  4. [精华分享][Unity模型制作blender]适合独立游戏开发的官方免费3D人物模型软件以及教程合集

    根据参考资料1 做出4个 3D模型软件,本文对其他 3D模型软件有补充. Maya: 只能用作教育用途. 3DMAX: 太贵了. Wings 3D: 免费的,但是 没有骨骼. CHEETAH 3D: ...

  5. Unity 自动制作LowPoly随机形态的树预制体工具

    通过一个树干模型和树叶模型 随机制作不同的预制体 Editor脚本: //===================================================== // - File ...

  6. 【转载】【Unity规则】【模型】Unity3D模型制作规范

    本文提到的所有数字模型制作,全部是用3D MAX建立的模型,即使是不同的驱动引擎,对模型的要求基本是相同的.当一个VR模型制作完成时,它所包含的基本内容包括:场景尺寸.单位,模型归类塌陷.命名.节点编 ...

  7. Unity 模型的制作规范

        数字模型制作规范 本文提到的所有数字模型制作,全部是用3D MAX建立模型,即使是不同的驱动引擎,对模型的要求基本是相同的.当一个VR模型制作完成时,它所包含的基本内容包括场景尺寸.单位,模型 ...

  8. Unity Shader - Making multiple shader program variants 制作shader程序多变体

    目录:Unity Shader - 知识点目录(先占位,后续持续更新) 原文:Making multiple shader program variants 版本:2019.1 Making mult ...

  9. Unity一键制作预制体Prefab一键修改Prefab属性

    1.适用于制作多个预制体(一个模型文件下面几百个子物体,都需要制作成预制体,这一个一个拖不是要炸裂) 模型资源如下图 ![请添加图片描述](https://img-blog.csdnimg.cn/63 ...

最新文章

  1. 【java】异常的分类
  2. 四则运算第三次冲刺(项目完成)
  3. KVM脚本批量添加删除虚拟机
  4. 计蒜客 A2232.程序设计:蒜厂年会-单调队列(双端队列(STL deque)实现)滑窗维护最小前缀和...
  5. oracle代码连接,Oracle连接核心知识点
  6. RFM模型+SOM聚类︱离群值筛选问题
  7. 对所谓原生软件的偏执
  8. pycharm快捷键之①“上下移动某一行“②参数提示
  9. android tabhost用法详解,android Tabhost部件详解
  10. 米克科技 - 全新开发悬赏任务APP系统源码平台
  11. Jenkins下载,部署,基本使用(SVN版)
  12. win10 蓝牙无法删除 完美解决方案
  13. matlab第二章实训总结,matlab实训小结
  14. 力扣 面试题 10.11. 峰与谷
  15. 计算机主机内部的除尘课件,怎么给电脑主机机箱内部除尘
  16. CCF计算机软件能力认证 C++ JSON查询
  17. 新《电商法》下,时下趋势的社交电商社群电商团购合规运营方案已上线成功!...
  18. 微信小程序WebSocket接口以及在小程序中的使用。
  19. 应用型本科计算机课程,应用型本科《计算机基础》课程教学改革探索
  20. 防偷窥神器!这款Windows软件,绝了!

热门文章

  1. CCF的基于UEBA的用户上网异常行为分析baseline(线上0.9263)
  2. 中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
  3. android studio内容提供者(查看短信的猫)点击查看短信,闪退,无法显示短信内容。(附程序源代码,以及解决办法)
  4. Spring Boot-1 (IntelliJ IDEA + gradle)
  5. 计算机图形学——八分法中点画圆
  6. python 找零问题 动态规划
  7. LeetCode(SQL)难度-中等
  8. python刷网易云_牛逼了!用Python开发的命令行版网易云音乐,Github获8300颗星!...
  9. 小白如何装重装操作系统(使用PE辅助)
  10. 【Linux】Linux私有组,主要组和附加组