VEXのエラーの原因と修正方法を教えていただきたいです

   2386   4   0
User Avatar
Member
3 posts
Joined: 3月 2021
Offline
houdini初心者です。

初歩的な質問かと存じます。原因と解決方法が見つけられなかったため質問させていただきます。

https://www.youtube.com/watch?v=CY88BJIRloA&t=337s [www.youtube.com]
上記YouTubeでのアンモナイトの作例を見ながら進めていたところ
VEXにエラーがあるようで、コントローラーが動作しませんでした。
見直しも行い間違いはないはずなのですが、原因と解決方法がわからないため教えてただきたいです。


VEXの記載内容

=======================

int num = chf("../CONTROLLER/num");
float a = chf("../CONTROLLER/a");
float b = chf("..CONTROLLER/b");

int prin = addprim(0. "polyline");

for(int i=0; i<num; i++)(
float r = i;
float theata = 1.0 / b * log( r / a);

vector pos = set(r * cos(theata),0. r * sin(theata));
int pt = addpoint(0.pos);
)
=======================



恐らく下記がエラー内容かと思います。

=======================

Error
Invalid source /obj/geo1/create_spiral/attribvop1
Error: Vex error: Unable to load shader 'op:/obj/geo1/create_spiral/attribvop1'.
Warning
Vex error: Unable to load shader 'op:/obj/geo1/create_spiral/attribvop1'
Warning
Syntax error, unexpected string constant, expecting ')'. (5,24)

=======================

Attachments:
untitled.hipnc (88.4 KB)

User Avatar
スタッフ
337 posts
Joined: 4月 2015
Offline
int prin = addprim(0. "polyline");

->
int prin = addprim(0, "polyline");

0 の後はピリオド (.) ではなくカンマ (,)

for(int i=0; i<num; i++)(
    ....
)

コマンド業をくくるのは
{  }

よって正しくはこうなるはずです。

int num = chf("../CONTROLLER/num");
float a = chf("../CONTROLLER/a");
float b = chf("..CONTROLLER/b");

int prin = addprim(0, "polyline");

for(int i=0; i<num; i++){
    float r = i;
    float theata = 1.0 / b * log( r / a);
    
    vector pos = set(r * cos(theata), 0.0 , r * sin(theata));
    int pt = addpoint(0, pos);
}
User Avatar
Member
3 posts
Joined: 3月 2021
Offline
早速のご回答ありがとうございます!
ご指摘いただいた箇所以外にも文法が間違っておりましたので一応
正しいと思われる記載を貼っておきます。

またVEXについてもう1点質問なのですが
 
chi
や 
chf
を入力すると
それぞれ予測変換のせいなのか  
chI
や 
chF
となってしまうのですが
設定などありましたら教えて頂きたいです。




int num = chi("../CONTROLLER/num");
float a = chf("../CONTROLLER/a");
float b = chf("../CONTROLLER/b");

int prim = addprim(0, "Polyline");

for(int i =0; i < num; i++)
{

    float r = i;
    float theta = 1.0/b * log(r / a);
    
    vector pos = set(r * cos(theta),0,r*sin(theta));
    int pt = addpoint(0,pos);
}
Edited by yosuke6444 - 2021年4月12日 20:33:12
User Avatar
スタッフ
337 posts
Joined: 4月 2015
Offline
それぞれ予測変換のせいなのか 
 

お使いの OS は何でしょうか?
User Avatar
Member
3 posts
Joined: 3月 2021
Offline
すみません。自己解決いたしました。
MacOSを使用していたのですが、入力ソースを「英字」ではなく
「英語(ABC)」で入力することで再現しなくなりました。
ご対応ありがとうございました。
  • Quick Links