The PartNet annotation system is a web-based tool for 3D part segmentation, consisting of:
- Backend: Node.js + MySQL
- Frontend: Browserify-based aplpication
Prerequisites
System Requirements
- OS: Ubuntu 18.04/20.04 (22.04/24.04 supported with Docker)
- Software:
- Node.js v10 (via nvm)
- MySQL 5.7
- Python 3
- Build tools (gcc, make, cmake)
Initial Setup
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git build-essential cmake
Node.js Installation
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
source ~/.bashrc
nvm install 10
nvm use 10
Database Configuration
Option A: Native MySQL
wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb
sudo apt update
sudo apt install -y mysql-server=5.7.*
Option B: Dockerized MySQL
sudo apt install docker-ce
docker run --name partnet-mysql -e MYSQL_ROOT_PASSWORD=securepass -p 3306:3306 -d mysql:5.7
Manifold Tool Installation
git clone https://github.com/hjwdzh/Manifold.git
cd Manifold && mkdir build && cd build
cmake .. && make
sudo cp manifold /usr/local/bin/model_fixer
Backend Configuration
Database Setup
mysql -u root -p -e "CREATE DATABASE partnet_annotation;"
mysql -u root -p partnet_annotation < mysql/create_table.sql
Environment Configuration
cp config/server.js.template config/server.js
# Edit server.js with your database credentials
npm install
Frontned Configuration
cd ../client
npm install --ignore-scripts
./build.sh
Common Issues
Database Connection Problems
- Verify MySQL service is running
- Confirm DB_HOST uses 127.0.0.1 instead of localhost
Path Handling
- Use absolute paths in configuration files
- Quote paths containing spaces in scripts
Python Compatibility
- Convert print statements to functions for Python 3
- Replace os.mkdir with os.makedirs
Texture Handling Modifications
Key improvements made to the system:
- Preserved textures during remeshing operations
- Modified camera settings for better visualization
- Enhanced color differentiation for parts
- Added texture export functionality
- Implemented semantic naming for exported parts