【Unity】LineRenderer画线拐点的网格变形问题

这篇具有很好参考价值的文章主要介绍了【Unity】LineRenderer画线拐点的网格变形问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、出现异常的问题

正常情况下,使用Unity中画线工具LineRenderer。可以画出期望的直线。
linerenderer面向问题,Unity功能代码,Unity,unity,游戏引擎
但当拐点处,两点的距离过小,并且线的宽度不是特别细的情况下。组件动态生成的线会发生变形。
linerenderer面向问题,Unity功能代码,Unity,unity,游戏引擎linerenderer面向问题,Unity功能代码,Unity,unity,游戏引擎
linerenderer面向问题,Unity功能代码,Unity,unity,游戏引擎

这是因为LineRenderer是根据填入的点位Positions和宽度Width来生成网格。如果两点间距过近,并且有一定的宽度,则计算出的连线会和期不一样,发生变形。

即使调高Corner Vertices拐点处的角顶点,只能让线看起来好一点,也无法解决变形问题。
linerenderer面向问题,Unity功能代码,Unity,unity,游戏引擎

二、解决办法

1.减小Width来保证显示正常,但很多情况下不适合

linerenderer面向问题,Unity功能代码,Unity,unity,游戏引擎

2.为拐点处,动态增加n个点

增加点位的代码:

    public static List<Vector3> AddLineRenderPos(Vector3[] posList, int addNum = 10)
    {
        List<Vector3> newPosList = new List<Vector3>();
        addNum /= 2;
        
        newPosList.Add(posList[0]);
        //为除首尾点之外的拐点附近,动态增加点位。
        for (int i = 1; i < posList.Length - 1; i++)
        {
            Vector3 start = posList[i - 1];
            Vector3 mid = posList[i];
            Vector3 end = posList[i + 1];

            for (int j = addNum; j > 0; j--)
            {    
                newPosList.Add(Vector3.Lerp(mid, start, j * 0.01f));
            }
            newPosList.Add(mid);

            for (int j = 1; j <= addNum; j++)
            {    
                newPosList.Add(Vector3.Lerp(mid, end, j * 0.01f));
            }
                
        }
        newPosList.Add(posList[^1]);

        return newPosList;
    }

linerenderer面向问题,Unity功能代码,Unity,unity,游戏引擎
宽度恢复到1后,可以看到是期望的形状。
linerenderer面向问题,Unity功能代码,Unity,unity,游戏引擎文章来源地址https://www.toymoban.com/news/detail-600278.html

到了这里,关于【Unity】LineRenderer画线拐点的网格变形问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity中利用LineRenderer绘制寻路路径

    这里主要是Catmull-Rom的应用,最终选用的是Centripetal Catmull–Rom spline 起初想要通过贝塞尔曲线去平滑路径,但是很快便发现路径平滑后它不穿过中途点。 贝塞尔曲线 Catmoll-Rom 参考 由最少4个点进行差值计算,差值结果在p1-p2之间 曲柄是由P’(0) = τ(P i - P i-2 ), P’(1) = τ(P i + 1

    2024年02月15日
    浏览(31)
  • 【Unity3D】线段渲染器LineRenderer

    1 LineRenderer 简介         LineRenderer 组件用于绘制线段,可以调整线段条数、端点坐标、颜色、宽度等属性,其属性面板如下: Materials :线段材质,最好设置为 Default-Line; Positions-Size :线段端点个数; Positions-Element :线段端点值; Width :线段宽度,可以是不等宽的;

    2023年04月08日
    浏览(39)
  • 【Unity开发】给LineRenderer添加碰撞体(使用MeshCollider)

    在这里选择使用MeshCollider组件给Line添加碰撞体。 首先创建Line的Mesh 通过查阅Unity官方文档我们可以得知,使用BakeMesh函数可以获取到Line的Mesh。 创建MeshCollider组件并添加Mesh信息

    2024年02月15日
    浏览(33)
  • unity 曲线可视化图表制作(lineRenderer + 贝塞尔曲线)

    需求要实现一个动态变化的曲线 思路: 分为两部分:画线和平滑曲线 首先解决画线问题: 1.lineRenderer 2.texture的setpixel 肯定选已经做好的轮子1啦 平滑曲线思路: 1.抛物线 2.贝塞尔曲线 抛物线做连续的曲线太抽象了 肯定选贝塞尔曲线 先了解一下贝塞尔曲线 一次贝塞尔 对应

    2023年04月08日
    浏览(33)
  • [Unity] 让LineRenderer显示在UI层上方(RenderTexture 、RawImage)

            网易Minigame2022中遇到的问题,项目中有设计点需要使用画笔的功能,已经做好了根据鼠标位置生成LineRenderer线段功能,但出现了一个问题:画板的界面是在Canvas UI层,但是LineRenderer的位置在世界空间中。按照正常显示顺序,UI层在场景渲染之后再渲染,LineRenderer会被

    2024年02月16日
    浏览(33)
  • Unity射线(Ray)与LineRenderer插件,射线的线条的显示与消失

    显示射线 1、必须添加组件LineRenderer 2、在代码里面获取LineRenderer组件,不然报错 3、对于射线的起点与终点位置需要明确,要不然射线显示的位置会出现很大问题.例如在射击类游戏,起始位置都应该在枪口的位置,只需要在枪口给一个空物体去过度一下,把射线的起始位置放

    2024年02月12日
    浏览(34)
  • 【游戏开发实战】Unity实现类似GitHub地球射线的效果(LineRenderer | 贝塞尔曲线)

    一、前言 嗨,大家伙,我是新发。 好久不见,这是2022年第一篇博客,今天有同学私信我,问我在 Unity 中如何实现这种地球辐射线的效果, 这一看,我就想到了 GitHub 主页的地球射线, 那么,今天就来讲讲如何实现这个效果吧~ 本文最终效果如下: 本文工程源码见文章末尾

    2024年02月06日
    浏览(81)
  • unity几种画线(网格)方式使用

    这是调用低级别的图形库划线,效率较高,需要放在OnPostRender()函数,并将代码挂载到相机上,下面代码画了一个正方形 注意:代码必须挂载到相机上,而已画线只能在Game视图中显示,Scene视图不显示 具体GL参数详情,可查看官方GL相关文档 比较简单,多用于调试,其中dur

    2024年02月15日
    浏览(31)
  • Unity——网格变形(制作一个压力球)

    主要参考链接:Mesh Deformation, a Unity C# Tutorial(本文为其翻译版) unity项目下载链接:https://download.csdn.net/download/weixin_43042683/87679832 在物体上投射射线并画出调试线。 将力转换为顶点的速度。 用弹簧和阻尼保持形状。 补偿物体变形。 本教程是一个关于网格变形的介绍。我们

    2024年02月11日
    浏览(36)
  • Unity中的网格创建和曲线变形

    在本篇博客中,我们将探讨如何使用Unity实现3D贝塞尔曲线变形效果。 线性公式 二次方公式 三次方公式 曲线的参数形式为: 准备工作 脚本概述 变量定义 变量解析 函数解析 获取所有子节点 GetAllChildren 获取所有子节点 UpdateBezierBend 控制点更新 CalculateBezier Bezier 曲线公式 Ge

    2024年03月24日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包