
3d-asset-server কী করে
3d-asset-server 3D মডেল, উপকরণ, টেক্সচার, HDRI, স্প্রাইট, UI অ্যাসেট, অডিও, ফন্ট এবং গেম অ্যাসেট প্যাকের জন্য একটি সার্চ বক্স সরবরাহ করে। এটি 18টি প্রোভাইডারে অনুসন্ধান চালায়, ফলাফল একত্র করে র্যাঙ্ক করে, প্রতিটি উৎসের অবস্থা জানায় এবং প্রোভাইডার সরাসরি ডাউনলোডের অনুমতি দিলে অ্যাসেট ডাউনলোড করে।
আপনি ব্রাউজার, curl, কমান্ড-লাইন ইন্টারফেস অথবা Model Context Protocol (MCP)-এর মাধ্যমে সংযুক্ত AI অ্যাসিস্ট্যান্ট থেকে এই প্রকল্প ব্যবহার করতে পারেন। ফলাফলে লাইসেন্সের তথ্য, মূল্যসংক্রান্ত অবস্থা, অ্যাট্রিবিউশনের প্রয়োজনীয়তা, ফরম্যাট, রেজোলিউশন এবং প্রোভাইডারের লিংক থাকে।
অনুসন্ধান কীভাবে কাজ করে
প্রতিটি কোয়েরির জন্য সার্ভার প্রাসঙ্গিক প্রোভাইডার নির্বাচন করে এবং সমান্তরালে তাদের অনুসন্ধান চালায়। প্রতিটি প্রোভাইডারের নিজস্ব টাইমআউট রয়েছে, তাই ধীরগতির বা অনুপলব্ধ কোনো সাইট অন্য উৎসের ফলাফল দেখানোতে বাধা দেয় না।
ফলাফল টেক্সটের প্রাসঙ্গিকতা, প্রোভাইডারের র্যাঙ্কিং, ফলাফলটি API নাকি স্ক্র্যাপার থেকে এসেছে, বিনামূল্যে ব্যবহারের সুযোগ, সরাসরি ডাউনলোড সমর্থন এবং উৎসের বৈচিত্র্যের ভিত্তিতে র্যাঙ্ক করা হয়। প্রতিক্রিয়ায় প্রতি-প্রোভাইডার প্রতিবেদনও থাকে, যেখানে ok, error, timeout, skipped বা link-এর মতো অবস্থা দেখা যায়।
কিছু প্রোভাইডার সরাসরি ডাউনলোড সমর্থন করে। Poly Haven, ambientCG, Kenney, TextureCan এবং BlenderKit-এর বিনামূল্যের অ্যাসেট এর উদাহরণ। অন্যান্য প্রোভাইডার সম্পূর্ণ মেটাডেটা ও অ্যাসেট পেজের লিংক দেয়, আর বট সুরক্ষার কারণে স্বয়ংক্রিয় অনুসন্ধান সম্ভব না হলে Fab, Poliigon এবং TurboSquid তাদের নিজস্ব সার্চ পেজের লিংক দেয়।
সমর্থিত উৎস
প্রোভাইডার ক্যাটালগে বিভিন্ন ধরনের কনটেন্টের জন্য উৎস রয়েছে:
- HDRI এবং PBR উপকরণ: Poly Haven, ambientCG, HDRMaps, HDRI Hub এবং 3DTexel।
- লো-পলি ও গেম অ্যাসেট: Kenney, Quaternius, Fab, itch.io এবং BlenderKit।
- টেক্সচার ও স্ক্যান করা উপকরণ: CGBookcase, ShareTextures, TextureCan, Textures.com এবং 3DTextures.me।
- মডেল ও অ্যাসেট মার্কেটপ্লেস: BlenderKit, CGTrader, TurboSquid, Fab এবং itch.io।
লিস্টিংভেদে লাইসেন্সের বিবরণ আলাদা হয়। উদাহরণস্বরূপ, Poly Haven, ambientCG এবং Kenney CC0 কনটেন্ট দেয়, অন্যদিকে মার্কেটপ্লেস প্রোভাইডাররা লিস্টিং-নির্দিষ্ট লাইসেন্স প্রয়োগ করতে পারে। কোনো অ্যাসেট বিতরণের আগে ফেরত আসা লাইসেন্স ও অ্যাট্রিবিউশনের তথ্য সবসময় পর্যালোচনা করুন।
ইনস্টলেশন ও সেটআপ
এই প্রকল্পের জন্য Node.js 20 বা পরবর্তী সংস্করণ প্রয়োজন। রিপোজিটরি ক্লোন করুন, নির্ভরতা ইনস্টল করুন এবং অ্যাপ্লিকেশন বিল্ড করুন:
git clone https://github.com/arielshad/3d-asset-server.git
cd 3d-asset-server
npm install
npm run buildওয়েব UI, HTTP API এবং MCP endpoint চালু করুন:
npm startডিফল্টভাবে স্থানীয় সার্ভারটি http://localhost:8787-এ চলে।
Docker সেটআপ
Docker ব্যবহার করেও সার্ভারটি বিল্ড ও চালাতে পারেন:
docker build -t 3d-asset-server .
docker run -p 8787:8787 3d-asset-serverওয়েব UI ব্যবহার
সার্ভার চালু করার পর http://localhost:8787 খুলুন। হোস্ট করা সংস্করণটি 3d.shep.bot-এ পাওয়া যায়।
অনুসন্ধান পেজে একটি কোয়েরি লিখুন, অ্যাসেটের ধরন নির্বাচন করুন, ফলাফল শুধু বিনামূল্যের অ্যাসেটে সীমাবদ্ধ করুন, সরাসরি ডাউনলোড আবশ্যক করুন অথবা নির্দিষ্ট প্রোভাইডার নির্বাচন করুন। অনুসন্ধানের অবস্থা URL-এ সংরক্ষিত হয়, তাই /search?q=sunset&type=hdri&free=true-এর মতো কোনো কোয়েরি বুকমার্ক বা শেয়ার করা যায়।
কোনো ফলাফলের বিস্তারিত শিট খুলে তার লাইসেন্স, লেখক, ফরম্যাট, পলিগন সংখ্যা, ট্যাগ, উপলব্ধ রেজোলিউশন এবং আনুমানিক ফাইলের আকার পর্যালোচনা করুন। এরপর আপনি ফরম্যাট ও রেজোলিউশন বেছে নিয়ে অ্যাসেট ডাউনলোড করতে, একটি curl কমান্ড কপি করতে অথবা এজেন্ট-উপযোগী প্রম্পট কপি করতে পারবেন।
হোস্ট করা ওয়েবসাইটে ডকুমেন্টেশন, OpenAPI রেফারেন্স, উৎসের তথ্য এবং স্ব-হোস্টিং নির্দেশিকাও রয়েছে। এর এজেন্ট-উপযোগী ফাইলগুলোর মধ্যে রয়েছে /AGENTS.md, /llms.txt, /llms-full.txt এবং /openapi.json।
HTTP API দিয়ে অনুসন্ধান
প্রধান অনুসন্ধান endpoint হলো GET /v1/search। অ্যাসেটের ধরন, বিনামূল্যে ব্যবহারের সুযোগ, সরাসরি ডাউনলোড সমর্থন, প্রোভাইডার, ফলাফলের সীমা এবং অফসেটের মতো ঐচ্ছিক ফিল্টারসহ একটি কোয়েরি দিন।
curl 'http://localhost:8787/v1/search?q=brick+wall&type=material&free=true&limit=5'সংক্ষিপ্ত প্রতিক্রিয়ায় র্যাঙ্ক করা ফলাফল ও প্রোভাইডার প্রতিবেদন থাকে:
{
"query": "brick wall",
"results": [
{
"id": "polyhaven:brick_wall_001",
"title": "Brick Wall 001",
"type": "material",
"license": {
"name": "CC0",
"commercialUse": true,
"attributionRequired": false
},
"resolutions": ["1k", "2k", "4k", "8k"],
"downloadable": true
}
],
"providers": [
{
"provider": "polyhaven",
"status": "ok",
"count": 5
}
]
}প্রোভাইডার ক্যাটালগ পেতে GET /v1/providers, সম্পূর্ণ অ্যাসেটের বিবরণের জন্য GET /v1/assets/{provider}:{id} এবং কোনো ফরম্যাট ও রেজোলিউশনের মাধ্যমে নির্বাচিত ফাইল পর্যালোচনা করতে GET /v1/assets/{id}/files ব্যবহার করুন।
API-এর মাধ্যমে ডাউনলোড
একটি একক ফাইলের ক্ষেত্রে ডাউনলোড endpoint উৎস ফাইলে রিডাইরেক্ট করে। একাধিক ফাইলের অ্যাসেটের ক্ষেত্রে এটি অ্যাসেট ও এর সহায়ক ফাইলসহ একটি zip স্ট্রিম করে:
curl -OJ 'http://localhost:8787/v1/assets/polyhaven:WoodenChair_01/download?format=gltf&resolution=1k'API-তে /health, /openapi.json, /v1/catalog এবং /v1/stats-ও রয়েছে। ক্যাটালগে প্রোভাইডার ও অ্যাসেটের সংখ্যা থাকে, আর পরিসংখ্যান endpoint ব্যবহার ও উৎসের স্বাস্থ্য সম্পর্কে প্রতিবেদন দেয়।
CLI ব্যবহার
বিল্ড করা CLI HTTP সার্ভিং, স্ট্যান্ডার্ড ইনপুট ও আউটপুটের মাধ্যমে MCP এবং টার্মিনাল থেকে অনুসন্ধান সমর্থন করে।
node dist/cli.js search "low poly tree" --type model --free --limit 5ফলাফলে স্কোর, অ্যাসেটের ধরন, বিনামূল্যে ব্যবহারের অবস্থা, প্রোভাইডার শনাক্তকারী, শিরোনাম এবং উৎস URL দেখা যায়। ফলাফলের পরে প্রোভাইডারগুলোর অবস্থা দেখানো হয়, যাতে বোঝা যায় কোন সাইট সাড়া দিয়েছে এবং কোনগুলো শুধু লিংক সরবরাহ করেছে।
CLI থেকে সম্পূর্ণ স্থানীয় সার্ভিস চালাতে ব্যবহার করুন:
3d-asset-server serveস্ট্যান্ডার্ড ইনপুট ও আউটপুটের মাধ্যমে MCP সার্ভার চালু করতে ব্যবহার করুন:
3d-asset-server mcpAI অ্যাসিস্ট্যান্টের সঙ্গে MCP ব্যবহার
MCP একটি AI অ্যাসিস্ট্যান্টকে অ্যাসেট খোঁজা, তাদের বিবরণ পরিদর্শন এবং অনুমোদিত ফাইল ডাউনলোড করার সুযোগ দেয়। উপলভ্য টুলগুলো হলো:
search_assetsকোয়েরি, ধরন, প্রোভাইডার, লাইসেন্স, ডাউনলোডযোগ্যতা এবং পেজিনেশন ফিল্টার ব্যবহার করে প্রোভাইডারগুলোতে অনুসন্ধান করে।get_assetমেটাডেটা, লাইসেন্সের তথ্য, উপলভ্য ফরম্যাট ও রেজোলিউশন এবং নির্বাচিত ডাউনলোডে কোন ফাইলগুলো আনা হবে তা ফেরত দেয়।download_assetএকটি কনফিগার করা ডিরেক্টরিতে অ্যাসেট ও এর সহায়ক ফাইল সংরক্ষণ করে এবং সমর্থিত zip প্যাক এক্সট্র্যাক্ট করে।list_providersপ্রতিটি প্রোভাইডার, তাদের অ্যাসেটের ধরন, মূল্য, লাইসেন্স এবং সরাসরি ডাউনলোড সমর্থনের বিবরণ দেয়।
Claude Code
স্থানীয় MCP প্রসেস চালু করতে এবং বর্তমান প্রজেক্টের অ্যাসেট ডিরেক্টরিতে ফাইল সংরক্ষণ করতে Claude Code কনফিগার করুন:
claude mcp add 3d-assets -e ASSET_DOWNLOAD_DIR="$PWD/assets" -- node /path/to/3d-asset-server/dist/cli.js mcpClaude Desktop, Cursor এবং অন্যান্য Stdio ক্লায়েন্ট
ক্লায়েন্টের MCP কনফিগারেশনে একটি সার্ভার এন্ট্রি যোগ করুন:
{
"mcpServers": {
"3d-assets": {
"command": "node",
"args": ["/path/to/3d-asset-server/dist/cli.js", "mcp"],
"env": {
"ASSET_DOWNLOAD_DIR": "/path/to/your/game/assets"
}
}
}
}রিমোট MCP
হোস্টেড সার্ভার Streamable HTTP MCP সমর্থন করে:
claude mcp add --transport http 3d-assets https://3d.shep.bot/mcpস্ব-হোস্টেড সার্ভারের জন্য ক্লায়েন্টকে http://<host>:8787/mcp-এ নির্দেশ করুন। রিমোট HTTP ডাউনলোড ডিফল্টভাবে নিষ্ক্রিয় থাকে, কারণ এতে সার্ভারের ডিস্কে ফাইল লেখা হবে। এই মোডে get_asset সরাসরি ফাইলের URL এবং একটি bundle zip URL ফেরত দেয়। সার্ভারে ফাইল সংরক্ষণ করার প্রয়োজন হলে তবেই ASSET_SERVER_HTTP_DOWNLOADS=true সেট করুন।
ডাউনলোড বোঝা
কোনো ফরম্যাট নির্দিষ্ট না করলে সার্ভার ব্যবহারিক গেম ও ওয়েব ফরম্যাটকে অগ্রাধিকার দেয়। মডেলের ক্ষেত্রে পছন্দের ক্রম হলো glb, এরপর gltf, fbx, obj এবং blend। HDRI-এর ক্ষেত্রে পছন্দের ক্রম হলো hdr, এরপর exr। ম্যাটেরিয়ালের ক্ষেত্রে ইমেজ ম্যাপ বা zip পছন্দ করা হয়, টেক্সচারের ক্ষেত্রে jpg, png, zip বা exr, আর প্যাকগুলো এক্সট্র্যাক্ট করা zip ফাইল হিসেবে ডাউনলোড হয়।
ডিফল্ট রেজোলিউশন হলো উপলভ্য বিকল্পগুলোর মধ্যে 2K-এর সবচেয়ে কাছাকাছি। সহায়ক ফাইলগুলো তাদের আপেক্ষিক পাথ ধরে রাখে, ফলে glTF ফাইলটি ম্যানুয়ালি পুনর্বিন্যাস ছাড়াই তার বাইনারি ও টেক্সচার ফাইল খুঁজে পায়।
assets/
└── polyhaven-WoodenChair_01/
├── WoodenChair_01_2k.gltf
├── WoodenChair_01.bin
└── textures/
├── WoodenChair_01_diff_2k.jpg
├── WoodenChair_01_nor_gl_2k.jpg
└── WoodenChair_01_arm_2k.jpgডাউনলোডার কেবল সর্বজনীন http এবং https URL থেকে ফাইল আনে, ব্যক্তিগত ও লুপব্যাক ঠিকানা প্রত্যাখ্যান করে, কনফিগারযোগ্য আকারের সীমা প্রয়োগ করে এবং ../-এর মতো অনিরাপদ আর্কাইভ পাথ প্রত্যাখ্যান করে। এটি লগইন পেজ, চেকআউট ধাপ বা হটলিংক সুরক্ষা এড়িয়ে যায় না।
কনফিগারেশন
সার্ভার চালু করার আগে পরিবেশ ভেরিয়েবল সেট করে এর নেটওয়ার্ক ঠিকানা, প্রোভাইডার, ডাউনলোড, নিরাপত্তা এবং কর্মক্ষমতা নিয়ন্ত্রণ করুন।
PORTএবংHOSTHTTP bind address নিয়ন্ত্রণ করে। এদের ডিফল্ট হলো8787এবং0.0.0.0।ASSET_SERVER_PROVIDERSকমা দিয়ে আলাদা করা তালিকা গ্রহণ করে, যেমনpolyhaven,ambientcg,kenney।ASSET_DOWNLOAD_DIRডিফল্ট MCP ডাউনলোড ফোল্ডার./assetsথেকে পরিবর্তন করে।ASSET_SERVER_MAX_DOWNLOAD_BYTESপ্রতি ডাউনলোডের আকারের সীমা নির্ধারণ করে, যার ডিফল্ট 2 GiB।ASSET_SERVER_PROVIDER_TIMEOUT_MSএবংASSET_SERVER_HTTP_TIMEOUT_MSপ্রোভাইডার ও HTTP টাইমআউট পরিবর্তন করে।ASSET_SERVER_CACHE_TTL_MSমেমরিতে থাকা HTTP ক্যাশের সময়কাল নিয়ন্ত্রণ করে।BLENDERKIT_API_KEYBlenderKit-এর প্ল্যান ও কেনা অ্যাসেট ব্যবহারের অনুমতি দিতে পারে।NODE_USE_ENV_PROXY=1Node-কে কনফিগার করাHTTPS_PROXYব্যবহার করতে বাধ্য করে।
প্রমাণীকরণ ও রেট সীমা
/v1/* এবং /mcp সুরক্ষিত করতে ASSET_SERVER_API_KEY সেট করুন। ক্লায়েন্টরা Bearer token, x-api-key হেডার বা api_key query parameter হিসেবে কী পাঠাতে পারে। Query parameter ব্যবহারে সতর্ক থাকুন, কারণ ব্রাউজারের ইতিহাস ও সার্ভার লগে এগুলো থাকতে পারে।
ডিফল্টভাবে প্রতি ক্লায়েন্টের জন্য 60-সেকেন্ডের উইন্ডোতে 120টি অনুরোধের রেট সীমা চালু থাকে। ASSET_SERVER_RATE_LIMIT এবং ASSET_SERVER_RATE_LIMIT_WINDOW কনফিগার করুন, অথবা সীমা নিষ্ক্রিয় করতে 0 সেট করুন।
প্রক্সি ও প্রোভাইডার সমস্যা সমাধান
CGTrader ক্লাউড ও ডেটাসেন্টার IP ঠিকানা ব্লক করতে পারে। বাড়ির সংযোগ থেকে এটি প্রায়ই কাজ করে; সার্ভারে প্রক্সি কনফিগার করুন এবং NODE_USE_ENV_PROXY=1 সেট করুন। স্ক্র্যাপ করা প্রোভাইডারগুলোর HTML-ও পরিবর্তিত হতে পারে। কোনো একটি উৎসে সমস্যা হলেও অন্য উৎসগুলো ফলাফল ফেরত দিতে থাকবে, আর npm run test:live প্রোভাইডারের উপলভ্যতা পরীক্ষা করতে পারে।
উন্নত মনিটরিং
আলাদা পোর্টে Prometheus মেট্রিক প্রকাশ করতে METRICS_PORT সেট করুন। সার্ভার অনুসন্ধান, প্রোভাইডারের অনুরোধ, ডাউনলোড, অ্যাসেট দেখা, MCP টুল কল, HTTP অনুরোধ এবং পেজ ভিউয়ের জন্য সীমাবদ্ধ-লেবেলযুক্ত মেট্রিক রেকর্ড করে। এটি IP ঠিকানা, কী বা কুকি সংরক্ষণ না করে কাঠামোবদ্ধ অনুসন্ধান ইভেন্টও লগ করে।
PROMETHEUS_URL কনফিগার করা থাকলে, পরিসংখ্যান এন্ডপয়েন্ট একাধিক রিপ্লিকা জুড়ে সমন্বিত ডেটা জানাতে পারে। এটি না থাকলে, পরিসংখ্যান শেষবার রিস্টার্টের পর থেকে বর্তমান প্রসেসের ডেটা উপস্থাপন করে।
প্রস্তাবিত কর্মপ্রবাহ
sunset,low poly treeবাbrick wall-এর মতো বর্ণনামূলক কুয়েরি ব্যবহার করে বিস্তৃতভাবে অনুসন্ধান করুন।- অ্যাসেটের ধরন, বিনামূল্যের অবস্থা, সরাসরি ডাউনলোডের সুবিধা বা নির্বাচিত প্রোভাইডার অনুযায়ী ফিল্টার করুন।
- লাইসেন্স, অ্যাট্রিবিউশনের প্রয়োজনীয়তা, ফরম্যাট, রেজোলিউশন এবং ফাইলের তালিকা পর্যালোচনা করুন।
- আপনার গেম বা ওয়েবসাইটের জন্য উপযুক্ত ফরম্যাট ও রেজোলিউশন বেছে নিন।
- অ্যাসেট ডাউনলোড করুন, অথবা প্রোভাইডার সরাসরি ডাউনলোডের অনুমতি না দিলে এর সোর্স লিংক কপি করুন।
- প্রয়োজনীয় অ্যাট্রিবিউশন ও লাইসেন্স ফাইল আপনার প্রজেক্টের সঙ্গে রাখুন।
উপসংহার
3d-asset-server বিচ্ছিন্ন অ্যাসেট অনুসন্ধানকে একটি একক কর্মপ্রবাহে রূপান্তর করে। এর ওয়েব UI, HTTP API, CLI এবং MCP টুল ব্যবহার করে আপনি অনেক প্রোভাইডারে অনুসন্ধান করতে, লাইসেন্স ও ডাউনলোডের তথ্য তুলনা করতে এবং ব্যবহারের জন্য প্রস্তুত মডেল, টেক্সচার, HDRI ও প্যাক সংগ্রহ করতে পারবেন। Node.js বা Docker ব্যবহার করে স্থানীয়ভাবে শুরু করুন, এরপর প্রোডাকশন ডিপ্লয়মেন্টের জন্য প্রোভাইডার, প্রমাণীকরণ, ডাউনলোডের পথ, রেট লিমিট এবং মনিটরিং কনফিগার করুন।
