Pourquoi les arêtes sont-elles visibles sur mon modèle ?
 
 
 

Les arêtes visibles sont des lignes masquées, normalement invisibles dans 3ds Max. Le problème survient généralement avec les modèles Revit car tout élément exporté à partir de Revit est converti en triangle. Cela rend visible les arêtes normalement masquées par 3ds Max.

Remarque

Ce problème d'arêtes visibles se produit en cas d'exportation depuis la version 2010 et les versions antérieures de Revit. Il a été résolu dans Revit 2011, de sorte que depuis cette version, les objets sont désormais exportés avec des informations relatives aux arêtes masquées.

Que sont les arêtes visibles ?

Vous pouvez reconnaître une arête visible, par exemple, si vous disposez d'un mur dans Revit qui ne devrait être représenté dans 3ds Max que par quatre arêtes constituant les côtés du mur. Au lieu de cela, 3ds Max affiche le triangle central qui relie les deux sommets de coin. Ce triangle central est normalement masqué.

Utilisez ce script pour masquer les arêtes indésirables dans les modèles importés, généralement les modèles de la version 2010 et des versions antérieures de Revit chargés dans 3ds Max avec FBX. Le script lit toutes les arêtes et détermine celles pouvant être masquées en évaluant si celles-ci sont proches de toute arête avoisinante. Le masquage des arêtes non souhaitées rend la visualisation du modèle bien plus simple.

Pour utiliser ce script :

  1. Sélectionnez tous les objets dans la scène.
  2. Dans le menu principal de 3ds Max, sélectionnez les options MAXScript > Nouveau script.
  3. Copiez et collez le script ci-dessous dans la boîte de dialogue.
  4. Appuyez sur Ctrl+E pour activer la fonction Evaluer tout et exécuter le script.

Vous pouvez également enregistrer ce script dans 3ds Max et glisser-déposer le fichier .ms dans la fenêtre tant que les objets sont sélectionnés.

Remarque

Ce script fonctionne uniquement pour les maillages éditables et ignore les polys, patches ou autres entités éditables.

(
	-- do this in a local scope so I don't pollute the global scope.
	function setVisibilityEdges obj =
	(
		local edgeSelSet = #()
		-- Go through all faces
		local numFaces = obj.numfaces
		for faceIndex = 1 to numFaces do
		(	
			-- And for every one of the 3 edges
			for edgeIndex = 1 to 3 do 
			(
				--collect the edge
				append edgeSelSet ( ((faceIndex-1)*3) + edgeIndex )
			)
		)
		-- Select all visible edges
		meshop.autoedge obj edgeSelSet 5 type:#setclear 
	)
	--==============================================
	-- Start of the runtime script
	--==============================================
	local timestart = timestamp()
	-- turn off undo during this operation.
	with undo off
	(
		local editMeshArray = #()
		for obj in Selection do
		(
			if (classof obj == Editable_Mesh) do
			(
				-- collect all the edit meshes first, because the
				-- user could have selected some helper objects too, which we
				-- don't want to process.
				append editMeshArray obj
			)
		)
		-- we don't need to hold the selection anymore, clear it out.
		clearselection()
				-- Array of object handles that have already had their edges hidden
		local allReadyProcessed = #()
		-- iterate through all selected edit meshes...
		for editMeshobj in editMeshArray do
		(
			local found = (FindItem allReadyProcessed editMeshobj.handle) > 0
			if (not found) then
			(
				setVisibilityEdges editMeshobj
				append allReadyProcessed editMeshobj.handle				-- Mark all the instances as processed too!
				InstanceMgr.GetInstances editMeshobj &repeatArray
				if (repeatArray.count > 0) then
				(
					-- mark them as processed by adding their handle to the array
					for repeat in repeatArray do
					(
						append allReadyProcessed repeat.handle
					)
				)
			)
		)
	)
	redrawviews()
	local timeend = timestamp()
	format "Total time: % (seconds)\n" ((timeend - timestart)/1000.0))