Houdini 中遇到的两个错误

简介: 最近在写 wranngle 的时候遇到了两个错误,挺难发现的,做个记录
houdini版本: 2020.5

错误一 死循环

今天下这些 for 循环的时候写了一个死循环,错误如下

    for(int i=0; i<total; i+step+1)
    {
    }

我找了许久,为什么会有死循环,后来发现了,在 i 的递增上一般正常的 写 for 循环, i 最后都是写的 i++,我这里本来写的也是 i++,但是后来想加个 step 就是每次不加 1 而是加 4,然后直接修改了这里,所以造成了死循环,因为 i++ 是自加,会自动将结果赋值给 i,而不使用 i++ ,后 i 的值自然得不到更新了。

       for(int i=0; i<total; i=i+step+1) // 这样 简单已处理就可以了
       {
       }

或者

       for(int i=0; i<total;) // 这样 简单已处理就可以了
       {
         //  …………
          i=i+step+1;
       }

错误二 数据精度

我做了一个功能,用来遍历一组 UV 点,用来找到 V 方向的最大值和最小值,然后存到point属性里,结果在后续的读取属性的时候 maxV 和 minV 都是0,校验过了,保存在 point 属性里的 maxV 是0.75, 但是我取出来的却是 0。

      int maxV=point(0,"maxV",@ptnum);
      int minV=point(0,"minV",@ptnum);

原因是 这里声明的 int maxV 是一个整数类型,所以 0.75 在这里被强转为 0 了,声明改为 float 就ok了

    float maxV=point(0,"maxV",@ptnum);
    float minV=point(0,"minV",@ptnum);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容