unity shader中获得模型中心点 + 中心点详解

这篇具有很好参考价值的文章主要介绍了unity shader中获得模型中心点 + 中心点详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考连接: Unity Shader中获取模型中心点的世界坐标_unity获取物体坐标_VirtualCreator的博客-CSDN博客

shader中获得模型原点的方式:

float3 center = float3(unity_ObjectToWorld[0].w, unity_ObjectToWorld[1].w, unity_ObjectToWorld[2].w);

float3 center = float3(unity_ObjectToWorld._m03, unity_ObjectToWorld._m13, unity_ObjectToWorld._m23);

float3 center = mul(unity_ObjectToWorld , float(0,0,0,1)).xyz;

float3 center = unity_ObjectToWorld._14_24_34;

原点指的是哪里:

实际是当前材质球挂接的Renderer的mesh定义的坐标原点,但是有两种情况:

1 Renderer是MeshRender

原点就是当前mesh的坐标原点.

当前body的mesh , 坐标中心就是原点

unity shader中获得模型中心点 + 中心点详解,unity,渲染基础,unity,游戏引擎,3d渲染

2 SkinnedMeshRender 

是RootBone所指游戏对象的坐标点。 可以自行测试

unity shader中获得模型中心点 + 中心点详解,unity,渲染基础,unity,游戏引擎,3d渲染

验证方式

项目需要我需要验证的是y轴的坐标

下面是验证的shader, 挂接在要验证的mesh上.

所输出的结果, 模型越黑的地方就是0点。文章来源地址https://www.toymoban.com/news/detail-645527.html

Shader "Unlit/shader_center"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            HLSLPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work
            #pragma multi_compile_fog
            
             #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
            
CBUFFER_START(UnityPerMaterial)
            float4 _MainTex_ST;
CBUFFER_END
            TEXTURE2D(_MainTex);
            SAMPLER(sampler_MainTex);
            struct Attributes
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };


            struct Varyings
            {
                float4 vertex : SV_POSITION;
                float2 uv : TEXCOORD0;
                float3 worldPos : TEXCOORD1;
            };


            Varyings vert (Attributes v)
            {
                Varyings o;
                VertexPositionInputs vertexInput = GetVertexPositionInputs(v.vertex);
                o.vertex = vertexInput.positionCS;
                o.worldPos = vertexInput.positionWS;
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                return o;
            }
            
            float4 frag (Varyings i) : SV_Target
            {
                  float3 center = float3(unity_ObjectToWorld[0].w, unity_ObjectToWorld[1].w, unity_ObjectToWorld[2].w);
                float co =abs(center.y - i.worldPos.y);
                return co;
                    // sample the texture
                float4 col = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex ,i.uv);
    
                return col;
            }
            ENDHLSL
        }
    }
}

到了这里,关于unity shader中获得模型中心点 + 中心点详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity中如何修改精灵(Sprite)的中心点(Pivot)位置

    在Unity中,精灵(Sprite)是游戏中最常用的图形资源之一。精灵的中心点(Pivot)决定了它的旋转和缩放的中心位置。默认情况下,精灵的中心点位于其包围盒(Bounding Box)的中心。然而,在某些情况下,我们可能需要将精灵的中心点设置为不同的位置,以便更好地适应特定的需求

    2024年02月04日
    浏览(55)
  • 【赏】three.js如何确定3dtile格式的模型的中心点和缩放比例

    three.js如何确定3dtile格式的模型的中心点和缩放比例。 有多个3dtile格式的模型(tileset.json + b3dm),请问如何确定合适的比例?即在three.js中如何确定像机的位置和缩放比例? 在three.js中确定3D模型的中心点和缩放比例通常需要以下步骤: 加载3D模型。使用three.js的加载器(例如

    2024年02月08日
    浏览(52)
  • 【Unity细节】为什么UI移动了锚点,中心点和位置,运行的时候还是不在设置的位置当中

    👨‍💻个人主页 :@元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 😶‍🌫️收录于专栏 :unity细节和bug 😶‍🌫️优质专栏 ⭐【软件设计师高频考点暴击】 此时我已经将锚点设置为左上角,但是运行时它不在左上角,而是在中间 它的父对象不

    2024年02月05日
    浏览(71)
  • PCL圆柱中心轴线提取、中心点提取

    适用于 圆柱中心轴线计算,轴线的端点、中心点计算 附代码完整实现及测试代码。 相关链接: C++ PCL点云圆柱结构提取/立杆结构提取

    2024年02月14日
    浏览(50)
  • 直线围绕中心点旋转(类似时钟)

    2024年04月09日
    浏览(56)
  • uniapp小程序地图设置中心点位置向上偏移

    图示: id=\\\"map\\\" ref=\\\"map\\\"

    2024年02月11日
    浏览(61)
  • WPF中有中心点的slider滑动条

    想要实现的效果 原生滑动条 需要认识一下滑动条的组成 在原生控件中生成“资源字典”对应的样式 然后在track所在的列进行添砖加瓦 由于track在row=\\\"1\\\"的位置,只需要在这个位置上面添加一个Ellipse和Line Ellipse是来描述固定在滑动条上的中心点的位置 line是来描述Thumb从中心点

    2024年02月08日
    浏览(49)
  • vue canvas拖拽,鼠标中心点缩放,标记点位等

    vue实现canvas画布建立图片,坐标建立,可进行拖拽,鼠标中心点位缩放,标记点位等功能 直接上源码 仅供学习使用

    2024年02月17日
    浏览(48)
  • 高德API JS 高德地图获取多个坐标点的中心点

    我需要: 在地图上展示多个地点 地图缩放到合适的大小,要求刚好能显示全部点位 边缘留有一部分间隔。 做成如图所示这样。 经过一下午的研究,弄出来了。 需要以下这些 AMap 的类库: AMap.Bounds() 区域 AMap.LngLat() 点坐标(基础点位) AMap.setBounds() 设置地图区域,这会自动

    2024年02月07日
    浏览(52)
  • Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心,Kotlin

      在 Android双击图片放大移动图中双击点到ImageView区域中心,Kotlin-CSDN博客 基础上,这次使用ScaleGestureDetector检测两根手指的缩放动作,记录两根手指的中心点位置,根据ScaleGestureDetector检测到的缩放因子(系数),放大原图,并移动放大前两根手指中心点在原图的位置移动到

    2024年01月23日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包