Medien & Zeichnungen
Jede Waffe trägt eine Strichzeichnung, jede Patrone eine maßstäbliche Illustration, jede Laborierung ein Geschossdiagramm, und ein wachsender Teil des Katalogs ein Foto, eine Schemazeichnung oder ein 3D-Modell. Diese Seite zeigt, wie jedes entsteht, woraus es gezeichnet wird und wie man es abruft. Die Zeichnungen unten erzeugt derselbe Code, den Website und API nutzen, aus denselben Datensätzen.
- 2,589Silhouetten
- 605Gezeichnete Patronen
- 16Felder, aus denen eine Patrone gezeichnet wird
- 8Geschossprofile
Die Arten von Assets
Fünf Arten, eine Form. GET /v1/firearms/{id}/media listet alles, was eine Waffe hat, als ein Array, jedes Element mit seinem kind markiert, und /media/{selector} holt eines über diese Art ohne vorherige Abfrage.
| Art | Was es ist | Wie es entsteht | Abdeckung |
|---|---|---|---|
| silhouette | Ein skalierbares schwarzes Strichprofil der Waffe, auf ihre echten Maße skaliert. | Von einem Bildmodell aus einem Referenzfoto gezeichnet, bereinigt, beschnitten und in Vektorpfade nachgezeichnet. | 2,589 von 9,162 Waffen; jeder neue Datensatz bekommt eine. |
| render | Ein generiertes Bild der Waffe im Studiostil. | Bildmodell aus dem Referenzfoto; Hintergrund entfernt. | Wo eine brauchbare Referenz existiert. |
| photo | Ein Foto mit Quelle und Lizenz. | Aus Herstellermaterial und lizenzierten Archiven kuratiert; nie aus einem Shop gescrapt. | Wachsend; gelistet von /v1/firearms/media. |
| schematic | Eine Explosionszeichnung oder technische Zeichnung. | Hersteller- und Archivdokumente, mit Quellenangabe. | Wo der Hersteller eine veröffentlicht. |
| model | Eine glTF-Binärdatei für three.js oder Babylon. | Aus Quellmodellen optimiert: meshopt-Kompression, WebP-Texturen, quantisierte Meshes. | Ein kuratierter Satz; mit has_3d_model=true filtern. |
Silhouetten
2,589 Waffen haben eine Strichzeichnung. Diese vier sind genau die Dateien, die die Website rendert, aus dem Bundle dieser Seite geladen; im dunklen Design werden sie invertiert, wie die Website es tut.
Alle 2,589 Silhouetten in der Galerie
- 1Ein Referenzfoto wird normalisiert: abgeflacht, nach sRGB konvertiert, skaliert. Fotos, die die Moderation nicht passieren, fallen auf eine reine Textgenerierung zurück und werden so markiert.
- 2Ein Bildmodell zeichnet kräftige schwarze Strichgrafik nur des Motivs, ohne Hintergrund. Eine Anfrage nach einer gefüllten Silhouette ergibt einen Klumpen; die Pipeline fragt nach Strichgrafik und füllt danach.
- 3Das Ergebnis wird in einem Durchgang bereinigt: Hintergrund transparent, enger Beschnitt, Antialiasing-Saum auf Alpha abgebildet, damit auf einer dunklen Seite kein heller Rand bleibt.
- 4Die Bitmap wird mit VTracer ohne Verdickung in Vektorpfade nachgezeichnet, damit Linien ihre gezeichnete Stärke behalten. Das Ergebnis ist ein gefülltes SVG, keine Konturlinie.
- 5Die Datei wird als
svgLineArtUrlam Datensatz vermerkt, auf das Asset-CDN geladen und über die API mit der gewünschten Strichfarbe und -breite ausgeliefert.
Auf der Website wird dieselbe Datei verschleiert ausgeliefert und clientseitig dekodiert; deshalb erhält ein API-Aufrufer stattdessen eine absolute CDN-URL. Ein Pfad, den kein Konsument abrufen konnte,, war eine Weile so dokumentiert, als ginge es. Das Feld steht in der Feldreferenz.
Patronenillustrationen
Eine Patrone wird nie aus ihrem Namen gezeichnet, sondern aus bis zu 16 Feldern des Kaliberdatensatzes: Rand-, Boden-, Schulter- und Halsdurchmesser, Hülsen- und Gesamtlänge, Geschosslänge und -durchmesser, Bodentyp, Hülsenform, Material, Projektilart, Geschossprofil, Verschluss und Markierungsfarbe. Die sechs unten zeichnet der gemeinsame Renderer auf dieser Seite aus dem Datensatz, wie er ist.
- 9x19mm ParabellumBodenrimlessHülsetaperedProjektilbulletProfilround_noseVerschlussbullet
- .45 ACPBodenrimlessHülsestraightProjektilbulletProfilround_noseVerschlussbullet
- .223 RemingtonBodenrimlessHülsebottleneckProjektilbulletProfilspitzerVerschlussbullet
- 7.62x39mmBodenrimlessHülsebottleneckProjektilbulletProfilspitzerVerschlussbullet
- 12 GaugeBodenrimmedHülsestraightProjektilshotVerschlussfold_crimp
- .50 BMGBodenrimlessHülsebottleneckProjektilbulletProfilspitzerVerschlussbullet
- 1
resolveCartridgeGeometrymacht aus dem Datensatz zeichenbare Millimeter. Jede vorhandene Zahl wird unverändert genutzt; eine fehlende wird Feld für Feld aus Verhältnisheuristiken ergänzt, und die Geometrie sagt, welche geraten wurden. - 2Die Hülsenkontur entsteht aus Bodentyp und Hülsenform, das Projektil aus Profil und Art, dann Crimps, Pfropfen oder Schrot aus dem Verschluss.
projectile_kind: noneist eine Platzpatrone und wird als solche gezeichnet. - 3Materialien werden zu Verläufen: Messing ist Messing, lackierter Stahl ist lackierter Stahl, eine Papierhülse ist Papier. Die Markierungsfarbe wird dort aufgetragen, wo der Datensatz sie verortet.
- 4Beide Renderer, die Inline-Glyphe und das Maßdiagramm, zeichnen aus derselben Geometrie, sodass ein Kaliber auf zwei Seiten nicht unterschiedlich aussehen kann.
Die geschlossenen Vokabulare, aus denen eine Patrone gezeichnet wird
caseShapeCase profile:straight,bottleneck,tapered,belted.- straight, tapered, bottleneck, none
caseMaterialWhat the case is made of:brass,steel,aluminium,polymer.- brass, nickel_brass, steel, lacquered_steel, aluminium, polymer, paper, caseless, none
projectileKindnoneis a blank.- bullet, none, shot, slug, round_ball, flechette, dart, pellet, rocket, grenade, signal
bulletProfileBullet shape:fmj,hollow_point,soft_point,spitzer,round_nose.- spitzer, spitzer_boat_tail, round_nose, flat_nose, wadcutter, semi_wadcutter, hollow_point, truncated_cone, round_ball
closureWhat seals the case mouth; a blank is a star crimp.- bullet, star_crimp, rosette_crimp, roll_crimp, fold_crimp, wad, paper, none
markingColorPaint that identifies the load: crimp lacquer on a blank, tip colour on a military round.- black, white, red, orange, yellow, green, blue, purple, pink, brown, grey, silver, gold
Die Zahlen stammen aus der veröffentlichten Zeichnung des Herstellers oder eines Normungsgremiums und tragen wie jeder Datensatz eine Konfidenzbewertung. Jede Patrone steht mit all diesen Feldern in der Kaliberreferenz.
Geschossdiagramme
Der bullet_type einer Laborierung wird in eines von 8 Profilen eingeordnet und als seitlicher Querschnitt gezeichnet, skaliert auf den Geschossdurchmesser des Kalibers. Die API rendert es auf Anfrage unter /v1/ammunition/{id}/bullet.svg; die Reihen unten sind die Ausgabe dieses Renderers für jedes Profil bei zwei Durchmessern.
Bei 9 mm
FMJJHPAPSPOTMTracerEPRPT
Bei 5.56 mm
FMJJHPAPSPOTMTracerEPRPT
Jeder Wert, den der Renderer im bullet_type einer Laborierung versteht, und das Profil, als das er gezeichnet wird. Ein nicht aufgeführter Typ liefert weiterhin ein Diagramm, gezeichnet als FMJ, und wird im Bereich Datenqualität gemeldet statt als korrekt ausgegeben.
FMJ
FMJTMJ
JHP
GDHPHPHPBTJHPSJHP
AP
APAPCRHEIAPSLAP
SP
HSPJSPSBTSP
OTM
BTHPHYBRIDMATCHMTACOPENTIPOTOTFBOTMSMK
TRACER
FMJTTTRACER
EPR
EPR
PT
ACCUAMAXBALLISTICBTIPELDMELDXFLEXLOCFLEXLOCKFTXPOLYMERPOLYTIPPTSSTSUBXTACTXVMAX
# Public: no key neededcurl https://api.gunspec.io/v1/ammunition/m882/bullet.svg # Or straight into an img tag<img src="https://api.gunspec.io/v1/ammunition/m882/bullet.svg" alt="M882 Ball, side profile">Gewehrdurchmesser bekommen einen längeren Körper und eine spitzere Ogive als Pistolendurchmesser, sodass dasselbe Profil über Kaliber hinweg richtig liest. Der Endpunkt braucht keinen Schlüssel. Jede Laborierung in der Munitionsreferenz trägt ihre Diagramm-URL als bulletSvgUrl.
Fotos, Schemata und Modelle
Die Assets, die wir hosten oder verlinken statt zeichnen. Jedes kommt mit der Quellenangabe, die es für die Weiterverwendung braucht.
- Fotos und Renderings werden von
GET /v1/firearms/mediaindexiert, eine dreispaltige Zeile pro Waffe für Medienraster und Spiegel, mit einem Fingerabdruck, der sich ändert, wenn Bilder hinzukommen oder wegfallen. - Schemata sind Explosions- und technische Zeichnungen aus Hersteller- und Archivmaterial, ab Studio; die Zugriffsmatrix hat die vollständige Freischaltung.
- 3D-Modelle sind glTF-Binärdateien mit meshopt-Kompression, WebP-Texturen und quantisierten Meshes. Ein Loader braucht diese drei Standarderweiterungen und sonst nichts.
- Assets, die wir verlinken statt hosten, antworten mit einem 302 auf ihren Ort; Assets in unserem eigenen Bucket streamen vom Endpunkt. In beiden Fällen ist
urleines Medienelements absolut und abrufbar.
Medien abrufen
Eine Ressource für alles, plus die älteren Routen pro Art, die bestehen bleiben. Die Adressierung über die Art braucht keine vorherige Abfrage; format=json liefert die Metadaten ohne Bytes, format=datauri bettet bis zu 256 KB ein.
| Endpunkt | Liefert | Tarif |
|---|---|---|
/v1/firearms/{id}/mediaList every asset for a firearm | application/json | Explorer |
/v1/firearms/{id}/media/{selector}Get one asset | application/json, image/png, image/webp, image/jpeg, image/svg+xml | Builder |
/v1/firearms/mediaIndex every firearm that has imagery | application/json | Explorer |
/v1/firearms/{id}/silhouetteGet silhouette line art | application/json, image/svg+xml | Builder |
/v1/firearms/{id}/imagesList images | application/json | Explorer |
/v1/firearms/{id}/images/{imageId}Get image asset | application/json, image/png, image/webp, image/jpeg, image/svg+xml | Builder |
/v1/firearms/{id}/schematicsList schematics | application/json | Studio |
/v1/firearms/{id}/modelGet 3D model | model/gltf-binary | Builder |
/v1/ammunition/{id}/bullet.svgRender a bullet diagram | image/svg+xml | Kein Schlüssel |
# Everything a firearm has, one shape, with a credit block per itemcurl -H "X-API-Key: your_api_key" \ https://api.gunspec.io/v1/firearms/ak-47/media # The silhouette as SVG, stroke recoloured, no prior lookupcurl -H "X-API-Key: your_api_key" \ "https://api.gunspec.io/v1/firearms/ak-47/media/silhouette?stroke_color=%23ffffff" # Just the metadata, no bytescurl -H "X-API-Key: your_api_key" \ "https://api.gunspec.io/v1/firearms/ak-47/media/photo?format=json"Jede Medienantwort trägt ein ETag und antwortet mit 304, wenn unverändert, sodass ein Spiegel nichts erneut lädt, was sich nicht bewegt hat; siehe Caching. Gewinnt oder verliert eine Waffe ein Asset, feuert firearm.updated an Webhook-Abonnenten.
Weiterverwendung und Sicherheit
Jedes Medienelement trägt die nötige Quellenangabe, und jedes SVG, das die API ausliefert, ist in einer Sandbox, bevor es einen Browser erreicht.
Der Credit-Block an jedem Element
credit.source- Where the record came from: a curated entry, an inference, or an import.
credit.author- Who made the asset, where it is credited.
credit.sourceUrl- Page the asset or document was taken from.
credit.license- Licence the asset is held under, where one is recorded.
Wie SVGs ausgeliefert werden
Ein SVG kann Skript enthalten. Jedes, das die API ausliefert, darunter Silhouetten, Geschosszeichnungen und Medien, wird mit einer Content-Security-Policy gesendet, die beim direkten Öffnen jede Ausführung verhindert, und Farbwerte, die in eine Silhouette geschrieben werden, werden validiert und maskiert. Die Richtlinie, von der Seite Datenschutzmaßnahmen:
default-src'none'style-src'unsafe-inline'img-srcdata:sandbox
Pressekit und das ZertifizierungssiegelMedienfelder in der Feldreferenz