精华内容
下载资源
问答
  • UGUI RectTransform 代码修改锚点和轴心

    千次阅读 2020-04-24 13:14:48
    本质上都可以通过 RectTransform 中的 Anchors 设置先中的 Min 和 Max 设置不同的值来实现,而通过代码动态修改锚点的对齐方式便是利用这两个参数来实现的 1. 16 中标准对齐方式对应的 Anchor 设置 直接设置 Rect...

    基本规律

    记住一个对应关系即可

    • Top => 1

    • Middle => 0.5

    • Bottom => 0

    • Left => 0

    • Center => 0.5

    • Right => 1

    递增规律:从左到右(x),从下到上(y)

    无论是锚点还是轴心,当 x 或 y 的取值为:

    • [0, 1] 时,表示点在对象区域内

    • < 0>1 时,表示该点在对象范围之外

     

    锚点(Anchor)

    UGUI 中的锚点是用来管理子节点与其父节点相对关系的一个属性,主要可以分 24 中类型,也可以分为两大类:

    • 16 种标准的对齐方式:

            

    • 6 种自定义对齐方式:

       

    而不管是上面的哪种方式,本质上都可以通过 RectTransform 中的 Anchors 设置先中的 MinMax 设置不同的值来实现,而通过代码动态修改锚点的对齐方式便是利用这两个参数来实现的

     

    1. 16种标准对齐方式对应的 Anchor 设置

    直接设置 RectTransform 组件的 anchorMinanchorMax 属性就可以了,这两个属性使用的都是 Vector2 类型的数据,如下:

    RectTransform rectTrans = transform.GetComponent<RectTransform>();
    • 左上(LeftTop)

      rectTrans.anchorMin = new Vector2(0, 1);
      rectTrans.anchorMax = new Vector2(0, 1);
    • 中上(CenterTop)

      rectTrans.anchorMin = new Vector2(0.5f, 1);
      rectTrans.anchorMax = new Vector2(0.5f, 1);
    • 右上(RightTop)

      rectTrans.anchorMin = new Vector2(1, 1);
      rectTrans.anchorMax = new Vector2(1, 1);

    可以看到大致的规律:Vector 变量中:

    • x:表示从左到右的锚点位置上下限

    • y:表示从下岛上的锚点位置上下限

    min 表示下限值,max 表示上限值,因此 min 的 x 和 y 必定小于等于 max 的 x 和 y

     

    2. 8种自定义对齐方式和 anchoredPosition

    标准对齐方式的参数值只有 0、0.5 和 1 三个取值,而自定义对齐方式的参数值可以是任意值,表示当前锚点在其所绑定节点的垂直和水平方向的一个坐标值,起点是左下角。

     

    轴心(Pivot)

    Pivot,即转轴或轴心,是赖以旋转的基础。

    在 UGUI 中,轴心位置可以直接通过设置 Pivot 属性来控制,使用的是 Vector2 类型的数据,其中 x 和 y 分别表示轴心在当前对象水平和垂直方向是的一个比例值,如:x = 0.5,y = 0.5 表示垂直和水平方向上的中心点。

    可以将当前物体看作一个以左下角为原点,上限值为 1 的坐标系,轴心就是该坐标系中的一个坐标点。其中,x 表示水平方向的,y 表示垂直方向

    1. 旋转

    当修改当前组件的 Rotation 从而使该 GameObject 旋转时,便是绕 Pivot 进行的。

    • 将 Pivot 设为 (0.5, 0.5),则轴心在中心点,效果如下:

    • 将 Pivot 改为 (0, 0.5),即轴心在左侧中心点,效果如下:

    2. 修改大小

    修改 Scale 进行缩放修改对象大小的话,也是以轴心为基础。同理,当通过组件的 Width 或 Height 修改大小,也是以 Pivot 作为固定点向外延伸。

    • 将 Pivot 设为 (0.5, 0.5),则轴心在中心点,改变 Width 时以中心往两边延伸:

    • 将 Pivot 改为 (0, 0.5),即轴心在左侧中心点,改变 Width 只往右侧轴心反方向延伸:

    3. 代码设置

    可以在代码中动态修改当前组件的轴心位置:

    RectTransform rectTrans = transform.GetComponent<RectTransform>();
    rectTrans.pivot = new Vector2(0.5f, 0.5f);// 中心点
    rectTrans.pivot = new Vector2(0, 0);      // 左下角

     

    动态修改 RectTransform 的 Left, Bottom, Right 和 Top 参数

    通过两个属性修改:

    • offsetMin:对应 (Left, Bottom)

    • offsetMax:对应 (-Right, -Top)

    例如边距都是 10 的话,用代码动态设置如下:

    RectTransform rectTrans = transform.GetComponent<RectTransform>();
    rectTrans.offsetMin = new Vector2(10, 10);
    rectTrans.offsetMax = new Vector2(-10, -10);

     

    参考

    展开全文
  • Linux下ffmpeg添加Facebook/transform代码块实现将全景视频的球模型转换成立方体模型 Facebook事实上已开始在平台中支持360度全景视频的流播,但公司对此并不满足。其工程师更是基于锥体几何学设计出了一套全新的...

    Linux下ffmpeg添加Facebook/transform代码块实现将全景视频的球模型转换成立方体模型
    Facebook事实上已开始在平台中支持360度全景视频的流播,但公司对此并不满足。其工程师更是基于锥体几何学设计出了一套全新的视频编码,号称最高能将全景视频的文件大小减少80%。(VR最新突破:全景视频压缩率达80%,即将普及爆发)

    在这里插入图片描述

    图片描述(最多50字)

    1、Facebook开源了其将2:1球模型视频转换成立方体模型的代码

    https://github.com/facebook/transform
    

    README:

    在这里插入图片描述

    图片描述(最多50字)

    1 # Transform
    2
    3 Transform is a video filter that transforms 360 video in equirectangular projection into a cubemap projection
    4
    5 ## Building
    6
    7 Transform is implemented as an ffmpeg video filter. To build Transform, follow these steps:
    8
    9 1. Checkout the source for ffmpeg
    10 2. Copy vf_transform.c to the libavfilter subdirectory in ffmpeg source
    11 3. Edit libavfilter/allfilters.c and register the filter by adding the line: REGISTER_FILTER(TRANSFORM, transform, vf); in the video filter registration section
    12 4. Edit libavfilter/Makefile and add the filter to adding the line: OBJS-$(CONFIG_TRANSFORM_FILTER) += vf_transform.o in the filter section
    13 5. Configure and build ffmpeg as usual
    14
    15 ## Running
    16
    17 Check out the options for the filter by running ffmpeg -h filter=transform
    18 A typical execution would be something like ffmpeg -i input.mp4 -vf transform=input_stereo_format=MONO:w_subdivisons=4:h_subdivisons=4:max_cube_edge_length=512

    在这里插入图片描述

    图片描述(最多50字)

    2、facebook/transform代码实现浅析

    2.1、据facebook称将球模型转成立方体模型科技减少25%的数据量

    在这里插入图片描述

    图片描述(最多50字)

    2.2、转换成四棱锥可以减少80%的数据量,但这部分代码没有开源。

    在这里插入图片描述

    图片描述(最多50字)

    2.3、现有球模型是怎么展开成2:1的视频的,以地球仪和世界地图为例:
    在这里插入图片描述

    图片描述(最多50字)

    2.4、根据其开源代码在linux下用ffmpeg实现的结果,实现方法参见:Linux下编译ffmpeg并用GDB调试 以及根据README修改相应源码

    在这里插入图片描述
    图片描述(最多50字)

    图片描述(最多50字)

    图片描述(最多50字)

    2.5、立方体展开成十字形的结果:

    在这里插入图片描述

    图片描述(最多50字)

    2.6、源码的转换核心是坐标之间的转换,即怎么把球模型上的点和立方体对应以来,其实现方法是给定立方体模型上的坐标,根据坐标算出α和β(可以想成极坐标,水平一圈360度,上下180度);α、β分别除以360度和180度,按比例找出在球上对应的点(在2:1视频中的像素点)。

    在这里插入图片描述

    图片描述(最多50字)

    2.7、以正前方这个面为例:

    在这里插入图片描述
    图片描述(最多50字)

    2.8、将坐标转换成在空间内的立方体坐标(qx,qy,qz);qz表示球心(立方体中心)到前方平面的距离

    在这里插入图片描述

    图片描述(最多50字)

    2.9、转换成(tx,ty,tz)是考虑到视线可能移动,正前方的面也变了,但此处默认(y,p)都为0;故坐标不变

    在这里插入图片描述

    图片描述(最多50字)

    2.10、在立体空间内算出(α,β),α是水平偏向角,范围:(-180度,180度);β是竖直偏向角,范围:(-90度,90度)

    在这里插入图片描述

    图片描述(最多50字)

    2.11、算出(α,β)角度,就可以根据比例得到对应在2:1视频中相应的像素点

    在这里插入图片描述

    图片描述(最多50字)

    图片描述(最多50字)
    文末也给大家,分享主要有C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK技术,面试技巧方面的资料技术讨论。

    感兴趣的朋友可以加群:812855908

    展开全文
  • Linux下ffmpeg添加Facebook/transform代码块实现将全景视频的球模型转换成立方体模型 Facebook事实上已开始在平台中支持360度全景视频的流播,但公司对此并不满足。其工程师更是基于锥体几何学设计出了一套全新的...

    Linux下ffmpeg添加Facebook/transform代码块实现将全景视频的球模型转换成立方体模型

    Facebook事实上已开始在平台中支持360度全景视频的流播,但公司对此并不满足。其工程师更是基于锥体几何学设计出了一套全新的视频编码,号称最高能将全景视频的文件大小减少80%。(VR最新突破:全景视频压缩率达80%,即将普及爆发)

    a0a7a80510974eb7aa8837676201e487

     

     

     

     

    1、Facebook开源了其将2:1球模型视频转换成立方体模型的代码

        https://github.com/facebook/transform

    README:

     

    b729cabf1e04446a835be6575cfebe31

     

     

     

     

    1 # Transform
     2 
     3 Transform is a video filter that transforms 360 video in equirectangular projection into a cubemap projection
     4 
     5 ## Building
     6 
     7 Transform is implemented as an ffmpeg video filter. To build Transform, follow these steps:
     8 
     9 1. Checkout the source for ffmpeg
    10 2. Copy `vf_transform.c` to the libavfilter subdirectory in ffmpeg source
    11 3. Edit `libavfilter/allfilters.c` and register the filter by adding the line: `REGISTER_FILTER(TRANSFORM, transform, vf);` in the video filter registration section
    12 4. Edit `libavfilter/Makefile` and add the filter to adding the line: `OBJS-$(CONFIG_TRANSFORM_FILTER) += vf_transform.o` in the filter section
    13 5. Configure and build ffmpeg as usual
    14 
    15 ## Running
    16 
    17 Check out the options for the filter by running `ffmpeg -h filter=transform`
    18 A typical execution would be something like `ffmpeg -i input.mp4 -vf transform=input_stereo_format=MONO:w_subdivisons=4:h_subdivisons=4:max_cube_edge_length=512`

     

    b729cabf1e04446a835be6575cfebe31

     

     

     

     

    2、facebook/transform代码实现浅析

    2.1、据facebook称将球模型转成立方体模型科技减少25%的数据量

    383c10b8431a43d6bd0f2ef6c4d02d49

     

     

     

     

    2.2、转换成四棱锥可以减少80%的数据量,但这部分代码没有开源。

    773eccb6644d4891a252732cd52ec516

     

     

     

     

    2.3、现有球模型是怎么展开成2:1的视频的,以地球仪和世界地图为例:

    27db5a9e96434bcbaaacf7429d27a174

     

     

     

     

    2.4、根据其开源代码在linux下用ffmpeg实现的结果,实现方法参见:Linux下编译ffmpeg并用GDB调试 以及根据README修改相应源码

    7c28da78175a4eaa8876e755b6098653

     

     

     

     

    38c38711d23a454582c773ecfbf4e221

     

     

     

     

    f81c4ca0e8964eec98e047e0d1d5132f

     

     

     

     

    2.5、立方体展开成十字形的结果:

    12b43cfe378742fc8a2efe62fabb6246

     

     

     

     

    2.6、源码的转换核心是坐标之间的转换,即怎么把球模型上的点和立方体对应以来,其实现方法是给定立方体模型上的坐标,根据坐标算出α和β(可以想成极坐标,水平一圈360度,上下180度);α、β分别除以360度和180度,按比例找出在球上对应的点(在2:1视频中的像素点)。

    2659fdd7fbbc4daba66782d0d90aabee

     

     

     

     

    2.7、以正前方这个面为例:

    a04bc2d2f3824a6d86a57a0f1129d953

     

     

     

     

    2.8、将坐标转换成在空间内的立方体坐标(qx,qy,qz);qz表示球心(立方体中心)到前方平面的距离

    f17a8caca6b5412cb8c50987b1c2e94b

     

     

     

     

    2.9、转换成(tx,ty,tz)是考虑到视线可能移动,正前方的面也变了,但此处默认(y,p)都为0;故坐标不变

    6ff86e96195b47198e8c0036d1737196

     

     

     

     

    2.10、在立体空间内算出(α,β),α是水平偏向角,范围:(-180度,180度);β是竖直偏向角,范围:(-90度,90度)

    26b9b52667d34da79dedf07fde9901b7

     

     

     

     

    2.11、算出(α,β)角度,就可以根据比例得到对应在2:1视频中相应的像素点

    acd47c76859440658cf3de19b8103377

     

     

     

     

    8b49c6c05f0d41ba86d606571e52473e

     

     

     

    文末也给大家,分享主要有C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK技术,面试技巧方面的资料技术讨论。

    感兴趣的朋友可以加群:812855908

    转载于:https://my.oschina.net/u/3997182/blog/3078884

    展开全文
  • 改变RectTransform的PosX,Y public Vector3 anchoredPosition3D { get; set; } 改变RectTransform的PosX,Y,Z. 是以设置的 anchors 为中心的,默认如果不设置 anchors 中心点是在屏幕中间 public Vector2 ...

    public Vector2 offsetMax { get; set; }
    以UI左下角为参考,往上缩放和往右缩放
    就是说在左下角的两个边都不动,只会缩放右上角的两个边
    在这里插入图片描述
    在锚点是custom模式下
    修改的是right 和 top
    在这里插入图片描述
    public Vector2 offsetMin { get; set; }
    以UI右上角为参考,往左缩放和往下缩放。
    就是说在右上角的两个边都不动,只会缩放左下角的两个边
    在这里插入图片描述
    在锚点是custom模式下
    修改的是left 和 button
    在这里插入图片描述
    public Vector3 anchoredPosition { get; set; }
    改变RectTransform的PosX,Y
    public Vector3 anchoredPosition3D { get; set; }
    改变RectTransform的PosX,Y,Z.
    是以设置的 anchors 为中心的,默认如果不设置 anchors 中心点是在屏幕中间
    在这里插入图片描述

    public Vector2 pivot { get; set; }
    是这个UI自身的中心位置,就是ui上默认在中间的哪个小圆圈,在做鼠标跟随的时候可以把它设置在ui的左上角或者左下角,如果不设置那么这个ui的中心位置会跟着鼠标移动
    在这里插入图片描述
    public Vector2 sizeDelta { get; set; }
    修改的是width和height.
    但是受锚点的影响,如果锚在父级左上角,那么修改这个只能是往右和往下,或者说是由下角缩放。锚在父级上面只能是往左右和往下缩放。
    在这里插入图片描述
    public Vector2 anchorMax { get; set; }
    自定义锚点,修改的是Anchors 下的 Max
    在这里插入图片描述
    调整右半边的上下两个花瓣在这里插入图片描述

    public Vector2 anchorMin { get; set; }
    自定义锚点,修改的是Anchors 下的 Min
    在这里插入图片描述
    调整左半边的上下两个花瓣
    在这里插入图片描述
    public Rect rect { get; }
    返回创建的这个UI中心点的x,y 和宽高width,height
    在这里插入图片描述

    展开全文
  • CSS3 transform图标加载代码是一款球状网页加载动画特效下载。
  • css3属性transform制作圆盘导航菜单代码 css3属性transform制作圆盘导航菜单代码 css3属性transform制作圆盘导航菜单代码 css3属性transform制作圆盘导航菜单代码
  • CSS3 transform图标加载代码是一款球状网页加载动画特效下载。
  • caffe代码DataTransform

    2017-09-25 22:06:17
    caffe 代码
  • 本文整理汇总了Python中pygame.transform方法的典型用法代码示例。如果您正苦于以下问题:Python pygame.transform方法的具体用法?Python pygame.transform怎么用?Python pygame.transform使用的例子?那么恭喜您,...
  • } // body world positions Vec2 posA = bodyA.getTransform().p; Vec2 posB = bodyB.getTransform().p; // create joint bodyA bodyB djd.initialize(bodyA, bodyB, posA, posB); Joint joint = world.createJoint...
  • 别的语言运行时可能需要修改代码来冲刷缓冲区。 Python有比较简单的方法,直接在运行时加上 -u: python -u XXXXX.py &amp;gt;&amp;gt; YYY.out 就可以解决上述问题。 当然这个没什么卵用。 ...
  • 1.改变RectTransform的top GetComponent<RectTransform>().offsetMax = new Vector2(GetComponent<RectTransform>().offsetMax.x, top); 2.改变RectTransform的bottom GetComponent<RectTransform&...
  • 本文整理汇总了Python中scipy.ndimage.affine_transform方法的典型用法代码示例。如果您正苦于以下问题:Python ndimage.affine_transform方法的具体用法?Python ndimage.affine_transform怎么用?Python ndimage....
  • css3 transform属性制作散乱的照片样式代码 css3 transform属性制作散乱的照片样式代码
  • 纯css3 transform文字变形3D阴影效果代码 纯css3 transform文字变形3D阴影效果代码
  • 本文整理汇总了Python中scipy.ndimage.interpolation.affine_transform方法的典型用法代码示例。如果您正苦于以下问题:Python interpolation.affine_transform方法的具体用法?Python interpolation.affine_...
  • // 纯代码transform // // Created by 唐帅 on 16/4/4. // Copyright © 2016年 tang. All rights reserved. // #import "ViewController.h" @interface ViewController () @
  • Gradle-初探代码注入Transform

    千次阅读 2019-05-29 09:33:50
    本文主要介绍gradle打包过程中transform阶段,这里大概说下AOP(Aspect Oriented Programming),这是一种面向切面的思想,预支对应的是OOP(Object Oriented Programming)面向对象编程,这里不展开说明。可以看下对AOP...
  • css3三角形布局transform旋转列表图片三角形布局代码 css3三角形布局transform旋转列表图片三角形布局代码
  • Transform

    2019-05-15 08:51:17
    从gradle 1.5版本开始,Android官方提供了Gradle Transform技术用于在项目构建阶段,即由class到dex转换期间修改class文件的一套api,借用这套api,开发者可以很容易的完成字节码插桩、代码注入技术等注入技术。...
  • Pandas 系列是带有轴标签的一维ndarray。...Pandas Series.transform()函数在self上调用func(传递的函数),生成具有转换后的值的序列,并且该序列具有与self相同的轴长。用法: Series.transform(func, axis=0, *a...
  • 创建一个transform属性 //按钮点击时,只能执行一次向上旋转 //派 M_PI_4 45度旋转 1. CGAffineTransform transforms= CGAffineTransformMakeRotation(M_PI_4); //按钮点击时,可多次执行缩放 //self....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,131
精华内容 2,452
关键字:

transform代码