切线 Visualizing tangents and binormals

原创 2016年08月30日 16:29:08

Visualizing tangents and binormals


原文链接 http://docs.unity3d.com/530/Documentation/Manual/SL-VertexProgramInputs.html

Tangent and binormal vectors are used for normal mapping. In Unity only the tangent vector is stored in vertices, and the binormal is derived from the normal and tangent values.

切线和副法线向量用于法线贴图。在unity中只有切线和法线是在顶点信息中有存储的,副法线来源于法线和切线的值。


Shader "Debug/Tangents" {
SubShader {
    Pass {
        CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag

        // vertex input: position, tangent
        struct appdata {
            float4 vertex : POSITION;
            float4 tangent : TANGENT;
        };

        struct v2f {
            float4 pos : SV_POSITION;
            fixed4 color : COLOR;
        };
        
        v2f vert (appdata v) {
            v2f o;
            o.pos = mul( UNITY_MATRIX_MVP, v.vertex );
            o.color = v.tangent * 0.5 + 0.5; //tangent切线
            return o;
        }
        
        fixed4 frag (v2f i) : SV_Target { return i.color; }
        ENDCG
    }
}
}



Bitangents副法线为法线和切线的叉乘,即垂直于法线和切线

Shader "Debug/Bitangents"
{


SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag


#include "UnityCG.cginc"


struct appdata
{
float4 vertex : POSITION;
float3 normal : NORMAL;
float4 tangent : TANGENT;
};


struct v2f
{
float4 color : TEXCOORD0;
float4 pos : SV_POSITION;
};



v2f vert (appdata v)
{
v2f o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
float3 bitangent = cross(v.normal,v.tangent.xyz) * v.tangent.w;     //副法线为法线和切线的叉乘,即垂直于法线和切线的线
o.color.xyz= bitangent * 0.5 + 0.5 ;
o.color.w =1.0;
return o;
}

fixed4 frag (v2f i) : SV_Target
{
fixed4 col = i.color;
return col;
}
ENDCG
}
}
}



副法线的来由(binormal)

Any given vertex has a tangent space as defined in Figure 12.4. The normal of the vertex that you’r...
  • GameRefer
  • GameRefer
  • 2012年08月19日 20:11
  • 1930

D3D11 法线贴图(凹凸贴图)

本章我们将学习如何让一张平坦的纹理表面具有深度的感觉。该技术叫做法线贴图。我们是基于前面那个章节来构建的,加载obj模型的那个章节。但是并并不会使用那个模型,我们会使用一个更简单的模型,它会位于地面,...
  • huhaoxuan2010
  • huhaoxuan2010
  • 2017年10月20日 18:30
  • 386

切线 Visualizing tangents and binormals

Visualizing tangents and binormals Tangent and binormal vectors are used for normal mapping. In Uni...
  • u013354943
  • u013354943
  • 2016年08月30日 16:29
  • 264

three.js 源码注释(八十六)extras/geometries/TubeGeometry.js

TubeGeometry用来在三维空间内创建一个弯管对象. 用法: var CustomSinCurve = THREE.Curve.create( function ( sca...
  • omni360
  • omni360
  • 2015年02月01日 17:32
  • 1486

UVA 10674 Tangents 求两圆切线

给出两圆求切线。一顿套模板,结果完全按照大白来好像过不了... #include #include #include #include #include #include #...
  • yskyskyer123
  • yskyskyer123
  • 2016年07月29日 16:40
  • 295

UVa 10674 Tangents 求两圆公切线

题目地址:pdf版 直接用白书模板 需要说ming
  • jingqi814
  • jingqi814
  • 2014年04月12日 02:09
  • 1170

oFusion发布1.9.86版了

隔了将近两年oFusion终于有动静了,我曾经以为它不再维护了,没想到2011年6月3号oFusion发布了1.9.86版,支持3DS Max 2009/2010/2011/2012 (32 and ...
  • pizi0475
  • pizi0475
  • 2012年09月03日 06:32
  • 2064

提取FBX文件中mesh的信息

Background由于毕设需要,最近在做FBX文件的解析工作,即解析由3dsmax导出的fbx文件模型,并在openGL中重新显示,到目前为止已经断断续续做了半个月了。根据我前期的调研来看,FBX ...
  • larry233
  • larry233
  • 2017年12月29日 23:50
  • 145

CNN入门必读经典:Visualizing and Understanding Convolutional Networks

本文主要是借助deconvnet来可视化卷积网络,这对于理解卷积网络还是非常重要的,同时本文又是13年ImageNet分类任务的冠军。 代码: https://github.com/guruucs...
  • bea_tree
  • bea_tree
  • 2017年04月03日 12:55
  • 1483

求二次、三次贝塞尔曲线的某个时间的位置及切线方向

Public Module BezierHelper     '''     ''' 获得二次贝塞尔曲线在某个时刻的位置     ''' B(t) = P0(1-t)^2+ 2P1t(1-t) + ...
  • llimite
  • llimite
  • 2016年11月24日 09:34
  • 1735
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:切线 Visualizing tangents and binormals
举报原因:
原因补充:

(最多只允许输入30个字)