Code Monkey home page Code Monkey logo

Comments (5)

candycat1992 avatar candycat1992 commented on May 22, 2024

P236页有讲锚点的作用,它用来确定多边形在空间中的位置,你可以把它改成其他值看看有什么不同就明白啦

from unity_shaders_book.

CaigerDeng avatar CaigerDeng commented on May 22, 2024

我理解的锚点就是,比如说向日葵绕着太阳转,这里的锚点相当于向日葵的根。
因为先前都没注意过shader,也不知Shader里哪些是广告牌哪些不是,不清楚广告牌效果里都是选模型原点为锚点的吗?
在236页里面举的草丛和粒子效果例子我也只是一知半解,草丛我可以想象摄像机镜头里有一团草丛,我水平方向绕着草丛移动镜头的时候,草丛就是一直对着我。但这个粒子效果是……?是什么样子的粒子效果?为什么向上方向要发生变化?这个粒子效果难道是浓烟吗?

from unity_shaders_book.

candycat1992 avatar candycat1992 commented on May 22, 2024

先说锚点的问题。的确并不一定是(0,0,0)点。我拿下面的图例说明一下。

qq 20160812173314

我们先看左边的部分。这种情况最简单,也就是书里的情况:只有一个四边形,而且它的模型中心恰好就是旋转中心,那我们的锚点就可以是(0,0,0)点。但如果这个四边形的模型中心不在红点所示的位置,那么明显广告版绕着旋转的点就不是我们希望的。我在P239页提到,这种方法不能利用批处理,因为一旦批处理了就会造成合并网格,那么多个四边形就会合并成一个整体网格里,这个网格的中心就肯定不是每个四边形应有的旋转中心(锚点)了。这就是上面右图的情况。此时每个四边形正确的锚点如红点所示,但模型原点确是绿点。

那么这种问题怎么解决呢?P239页也提到了,真实项目里的是利用顶点色来存储每个顶点到锚点的距离的。也就是说,锚点的计算是靠锚点 = 顶点位置 + 该顶点到锚点的偏移值来决定的,这样一来即便批处理过后顶点位置都发生了变化,但偏移值已经存储在了顶点色中,我们总是可以靠上面的公式计算得到正确的锚点位置。具体细节你可以参考下面两篇文章:

【Unity Shaders】ShadowGun系列之二——雾和体积光以及UnityShader实例10:广告牌(Billboard)材质

最后,粒子特效也是靠很多四边形渲染出来的呀,它们一定要始终面向摄像机猜可以呀~

from unity_shaders_book.

CaigerDeng avatar CaigerDeng commented on May 22, 2024

感谢这详细的解答,我理解了。
我看了给的两个链接,觉得还是第一个链接“雾和体积光”讲的容易理解些,讲的比书上这段”草丛“的举例好些,草丛的例子我还是和237页的彩图一起想想,才明白这个草丛到底是怎么观看的。第二个链接之前有看过,感觉最有用的是里面的GIF水箱图,但博主的解释是真的一头雾水。
237页的彩图真好,是广告牌这段里最直观最好理解的了。

from unity_shaders_book.

candycat1992 avatar candycat1992 commented on May 22, 2024

草丛还是很常见的例子,你大概想的是那种复杂的草丛模型……Anyway自己琢磨的越多才会进步,加油

from unity_shaders_book.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.