BVH文件 Java解析器

该博客介绍了如何使用Java编写一个BVH文件解析器,详细讲解了解析过程,并提供了导入gson包的方法,以及如何读取、写入BVH文件的步骤。还附带了源码逻辑的注释。
摘要由CSDN通过智能技术生成

BVH文件解析器


简介

对于BVH文件的格式,可以参考:BVH文件格式解析


解析器

使用java编写,具体使用方法:

  • 导入google的gson包,用来生成json:

    1. 如果是eclipse,下载jar导入到项目中:gson jar下载
    2. 如果是使用IDEA,则通过File - Project Structure - Modules - Dependencies - +(加号) - Libraries - From Mave, 搜索gson,添加com.google.gson.Gson;
  • 创建 BVHParser 的类对象:

BVHParser parser = new BVHParser();
  • 传入bvh文件的绝对路径,调用 parse(String) 方法解析得到json格式的字符串:
String json = parser.parse("your absoulte path of the .bvh file's ");
  • 如果要写入文件:
File out = new File("out.json"); // print to a json file
try {
        PrintStream ps = new PrintStream(new FileOutputStream(out));
        ps.println(json);
} catch (IOException e) {
        e.printStackTrace();
} finally {
        parser.release();
}
  • 最后释放I/O
parser.release();

源码

对于逻辑,部分已在代码中注释

import com.google.gson.Gson;

import java.io.*;
import java.lang.reflect.Field;
import java.util.ArrayList;

/**
 * Parsing the standard .bvh file, some infor cannot be tranfered to json if not a standard .bvh file
 * Only get segment's data without motion's data.
 * <p>
 * The parser need external library: com.google.code.gson:gson
 * <p>
 * Created by PentonBin on 16-3-23.
 */
public class BVHParser {
   

    private static final String TAG = "BVHParser";

    private static final String KEYWORD_HIERARCHY = "HIERARCHY";
    private static final String KEYWORD_ROOT = "ROOT";
    private static final String KEYWORD_OFFSET = "OFFSET";
    private static final String KEYWORD_CHANNELS = "CHANNELS";
    private static final String KEYWORD_JOINT = "JOINT";
    private static final String KEYWORD_END_SITE = "End Site";
    private static final String KEYWORD_MOTION = "MOTION";
    private static final String KEYWORD_FRAME = "Frames";
    private static final String KEYWORD_FRAME_TIME = "Frame Time";

    private static final int NUM_OFFSET = 3;
    private static final int NUM_ROOT_CHANNELS = 6;
    private static final int NUM_JOINT_CHANNELS = 3;

    private BufferedReader mParseReader;
    private boolean isReaderMarkConsume = true;

    
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值