質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

5082閲覧

Processingで書いたコードの実行時、java.lang.NullPointerExceptionが出ることへの対処法

toboli

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2018/10/23 17:43

こんにちは。
Processingで書いたコードを実行すると、java.lang.NullPointerExceptionというエラーが出てしまい、対処に困っています。
対処の方法や方向性などをアドバイスいただけないでしょうか。
エラーメッセージ、ソースコードは以下の通りです。

###エラーメッセージ

java.lang.NullPointerException at java.io.DataInputStream.readInt(DataInputStream.java:387) at processing.core.PFont.<init>(PFont.java:350) at processing.core.PApplet.loadFont(PApplet.java:6245) at list4_02_AR_Measure.setup(list4_02_AR_Measure.java:148) at processing.core.PApplet.handleDraw(PApplet.java:2404) at processing.opengl.PSurfaceJOGL$DrawListener.display(PSurfaceJOGL.java:866) at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692) at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674) at jogamp.opengl.GLAutoDrawableBase$2.run(GLAutoDrawableBase.java:443) at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293) at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147) at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:759) at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:81) at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:452) at com.jogamp.opengl.util.FPSAnimator$MainTask.run(FPSAnimator.java:178) at java.util.TimerThread.mainLoop(Timer.java:555) at java.util.TimerThread.run(Timer.java:505)

###該当のソースコード
参考にした本(『ARプログラミング—Processingでつくる拡張現実感のレシピ—』)のサンプルコードをそのまま使用しています。

processing

1/* リスト4.2 AR距離計のプログラム */ 2 3import jp.nyatla.nyar4psg.*; // NyAR4psg 4import processing.video.*; // ビデオライブラリ 5import processing.serial.*; // シリアル通信ライブラリ 6import cc.arduino.*; // Arduinoライブラリ 7 8Arduino arduino; // Arduino 9Capture cam; // キャプチャ 10MultiMarker ar; // ARマーカに関する処理をするオブジェクト 11int id; // マーカに割り当てられるID番号 12 13// センサが接続されているアナログピンの番号 14int sensorPin = 0; 15 16// マーカに対するセンサの位置(単位:mm) 17float offset_x = 45.0; 18float offset_y = 0.0; 19float offset_z = -30.0; 20 21// キャリブレーションで求めた定数 22float a = 118200; 23float b = -11.5; 24 25void setup() { 26 // 画面の設定 27 size(640,480,P3D); 28 29 // ARをやるための準備 30 cam = new Capture(this, width, height); 31 ar = new MultiMarker(this, width, height, "camera_para.dat", NyAR4PsgConfig.CONFIG_PSG); 32 33 // マーカの設定(使用するマーカに合わせて値を変更してください) 34 id = ar.addARMarker("AR_measure.patt", 50); 35 36 // Arduinoの設定(自分の環境に合わせてポート番号を変更してください) 37 arduino = new Arduino(this, Arduino.list()[0], 57600); 38 39 // フォントの設定(任意のフォントを設定してください) 40 PFont font = loadFont("HGSoeiKakugothicUB-50.vlw"); 41 textFont(font); 42} 43 44void draw() { 45 // カメラの用意ができていないときは処理をせずに出る 46 if (cam.available()==false) return; 47 48 cam.read(); // カメラ画像の読み込み 49 background(0); // 画面の初期化 50 ar.drawBackground(cam); // 背景画像の描画 51 ar.detect(cam); // マーカ認識 52 53 // センサ入力からの距離の計算 54 float value = arduino.analogRead(sensorPin); 55 float distance = a / (value + b); 56 57 // マーカが認識されていたら 58 if ( ar.isExistMarker(id) && distance > 0 ) { 59 ar.beginTransform(id); 60 61 // ビームの描画 62 strokeWeight(15); 63 stroke(255,0,0,128); 64 line( offset_x, offset_y, offset_z, 65 distance + offset_x, offset_y, offset_z ); 66 67 // 距離の表示 68 rotateZ(PI); 69 rotateX(-PI/2); 70 fill(255,0,0,127); 71 textSize(40); 72 translate(-100,-50); 73 text("距離:"+int(distance)+"mm",0,0,0); 74 75 ar.endTransform(); 76 } 77}

###試したこと
・サンプルコードが載っている本の出版時に使われていたらしいProcessing2.2.1と、Processing3.4(最新版)、どちらのバージョンでも試しましたが、同じエラーが出ました。
・javaのメジャーなエラーだということは分かったのですが、具体的にコードをどう直せばいいかまでは分かりませんでした。

###補足情報(FW/ツールのバージョンなど)
PC環境は、windows10です。

ご回答いただけたら幸いです。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

予めvlw形式のフォントを作成しておく必要があります。
https://processing.org/reference/loadFont_.html

投稿2018/10/23 19:11

編集2018/10/23 19:12
hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toboli

2018/10/26 12:52

hichon様 返信が遅くなり、申し訳ありません。 早々にご回答くださってありがとうございます! アドバイス通り、vlw形式のフォントを作成を入れてみると、エラーは出なくなりました! 本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問